<?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: Rahul Dhileep Kumar</title>
    <description>The latest articles on DEV Community by Rahul Dhileep Kumar (@rahul_dk).</description>
    <link>https://dev.to/rahul_dk</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%2F3861987%2Fcd208161-282e-40f4-ae10-995bc03ae6b1.jpg</url>
      <title>DEV Community: Rahul Dhileep Kumar</title>
      <link>https://dev.to/rahul_dk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rahul_dk"/>
    <language>en</language>
    <item>
      <title>Production outage lessons: we blamed our code. It was SSL.</title>
      <dc:creator>Rahul Dhileep Kumar</dc:creator>
      <pubDate>Fri, 16 Oct 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/rahul_dk/production-outage-lessons-we-blamed-our-code-it-was-ssl-d1n</link>
      <guid>https://dev.to/rahul_dk/production-outage-lessons-we-blamed-our-code-it-was-ssl-d1n</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbqv7noftlxn6f9ylj47v.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbqv7noftlxn6f9ylj47v.webp" alt="The office desk: three monitors, a Pikachu, a goals poster and a chandelier made of Monster cans" width="800" height="763"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Building a product is one job.&lt;br&gt;
Keeping it alive is a completely different job.&lt;/p&gt;

&lt;p&gt;Nobody warns you about the second one.&lt;br&gt;
Or they do, and you don't listen.&lt;br&gt;
I didn't listen.&lt;/p&gt;

&lt;p&gt;This post is my production outage lessons, learnt the expensive way.&lt;br&gt;
One backend split, one expired SSL certificate, four hours of blaming the wrong thing.&lt;br&gt;
And what I'd do differently: checklists, rollbacks, monitoring and postmortems.&lt;/p&gt;

&lt;h2&gt;
  
  
  The clever idea: splitting the backend
&lt;/h2&gt;

&lt;p&gt;This happened in 2026, not long after we incorporated TrackMy Tech.&lt;br&gt;
We'd just become a private limited company.&lt;br&gt;
And we had a nagging feeling we weren't doing things professionally enough.&lt;br&gt;
We wanted to fix that.&lt;/p&gt;

&lt;p&gt;We also had real problems.&lt;br&gt;
Lots of payment-related issues.&lt;br&gt;
A steady stream of API errors.&lt;br&gt;
And the load wasn't balancing well.&lt;/p&gt;

&lt;p&gt;Then an Instagram reel showed up.&lt;br&gt;
I shared it with the team.&lt;br&gt;
"This model is so capable. We can try some serious stuff with it."&lt;br&gt;
That one reel kicked off the whole cycle.&lt;/p&gt;

&lt;p&gt;The plan: split the backend into separate pieces.&lt;br&gt;
We used an AI coding agent to do the heavy lifting.&lt;br&gt;
To be fair to the agent, it did its job.&lt;br&gt;
It was us who got things wrong.&lt;/p&gt;

&lt;p&gt;On paper, splitting load sounds smart.&lt;br&gt;
Spread the work. Feel like a real engineering team.&lt;br&gt;
Put "distributed" in your head and feel tall.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then everything went down
&lt;/h2&gt;

&lt;p&gt;Not slowly. Not politely.&lt;br&gt;
Everything went down.&lt;br&gt;
For hours.&lt;/p&gt;

&lt;p&gt;If you've never broken production, let me describe the feeling.&lt;br&gt;
Your stomach drops to somewhere near your shoes.&lt;br&gt;
Every message notification sounds like an accusation.&lt;/p&gt;

&lt;p&gt;Real academies use &lt;a href="https://www.trackmyacademy.com" rel="noopener noreferrer"&gt;Track My Academy&lt;/a&gt;.&lt;br&gt;
Real coaches. Real parents. Real attendance.&lt;/p&gt;

&lt;p&gt;None of them care about our clever architecture.&lt;br&gt;
They care that the app works.&lt;/p&gt;

&lt;p&gt;And it did not work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb0oh0y1x4rsbyvpzgbgv.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb0oh0y1x4rsbyvpzgbgv.webp" alt="A server room with rows of network cabinets under blue cables" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@tvick" rel="noopener noreferrer"&gt;Taylor Vick&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/server-room-with-network-cabinets-aWslrFhs1w4" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The real culprit: an expired SSL certificate
&lt;/h2&gt;

&lt;p&gt;We were sure we'd broken the code.&lt;br&gt;
So we did what any panicking team does.&lt;br&gt;
We checked the split.&lt;br&gt;
We checked the code.&lt;br&gt;
Then we checked it all again.&lt;/p&gt;

&lt;p&gt;About four hours later, we found it.&lt;br&gt;
It wasn't the code at all.&lt;br&gt;
The SSL certificate on our backend domain had expired.&lt;br&gt;
Right in the middle of the transition.&lt;/p&gt;

&lt;p&gt;It was failing silently.&lt;br&gt;
And we were busy blaming our own clever architecture.&lt;/p&gt;

&lt;p&gt;When we finally saw it, we just stared at the screen.&lt;br&gt;
Oh God.&lt;br&gt;
This is why debugging is hard.&lt;/p&gt;

&lt;p&gt;Here's why it's so sneaky.&lt;br&gt;
A &lt;a href="https://en.wikipedia.org/wiki/Public_key_certificate" rel="noopener noreferrer"&gt;TLS certificate&lt;/a&gt; proves a server is who it claims to be.&lt;br&gt;
Every certificate has a "Not After" date.&lt;br&gt;
After that date, it's simply no longer valid.&lt;br&gt;
Apps and browsers stop trusting the server, and requests fail.&lt;/p&gt;

&lt;p&gt;Short certificate lifetimes are normal now.&lt;br&gt;
&lt;a href="https://letsencrypt.org/docs/faq/" rel="noopener noreferrer"&gt;Let's Encrypt says&lt;/a&gt; its default certificates are valid for 90 days.&lt;br&gt;
It recommends renewing them every 60 days.&lt;br&gt;
Miss a renewal and the clock just quietly runs out.&lt;/p&gt;

&lt;p&gt;The timing is what fooled us.&lt;br&gt;
Two things changed at once: our backend, and the certificate's validity.&lt;br&gt;
So naturally we blamed the change we'd made ourselves.&lt;/p&gt;

&lt;p&gt;Google's &lt;a href="https://sre.google/sre-book/introduction/" rel="noopener noreferrer"&gt;SRE book&lt;/a&gt; says roughly 70% of outages come from changes to a live system.&lt;br&gt;
We were the change.&lt;br&gt;
We just weren't the cause.&lt;/p&gt;

&lt;h2&gt;
  
  
  The longest night in the office
&lt;/h2&gt;

&lt;p&gt;I stayed in the office all night.&lt;/p&gt;

&lt;p&gt;Not because it looks dedicated on LinkedIn.&lt;br&gt;
Because it was my mess, and I wanted it fixed.&lt;/p&gt;

&lt;p&gt;There's a special kind of quiet in an office at 3 a.m.&lt;br&gt;
It's just you, the monitors, and your mistakes.&lt;/p&gt;

&lt;p&gt;The Monster cans on the wall were not decoration that night.&lt;br&gt;
They were fuel.&lt;br&gt;
(The full tour of that desk is in &lt;a href="https://www.rahuldk.in/blog/three-monitors-one-monster-can" rel="noopener noreferrer"&gt;three monitors, one Monster can&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;Office nights are not rare for me, sadly.&lt;br&gt;
That's a whole other post: &lt;a href="https://www.rahuldk.in/blog/exams-the-office-and-a-1am-gate" rel="noopener noreferrer"&gt;exams, the office and a 1 a.m. gate&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  When I'm stuck badly enough, I call Arun
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyel3runb1ekkntch709z.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyel3runb1ekkntch709z.webp" alt="Arun, our CTO, smiling at the camera" width="600" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every founder needs one person who picks up at any hour.&lt;br&gt;
For me, that's Arun. Our CTO.&lt;/p&gt;

&lt;p&gt;No questions asked. He just picks up.&lt;br&gt;
At any hour. Which is frankly suspicious.&lt;/p&gt;

&lt;p&gt;If you want to know who he is, here's &lt;a href="https://www.arunvignesh.my/" rel="noopener noreferrer"&gt;his portfolio&lt;/a&gt;.&lt;br&gt;
He's the reason "stuck" never becomes "stuck forever".&lt;/p&gt;

&lt;p&gt;The lesson here isn't technical.&lt;br&gt;
Know who you'll call before the crisis, not during it.&lt;/p&gt;

&lt;h2&gt;
  
  
  A deployment checklist I'd hand my past self
&lt;/h2&gt;

&lt;p&gt;I'm not going to pretend I have a grand theory.&lt;br&gt;
But here's the checklist that night burned into my brain.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Check the boring stuff first.&lt;/strong&gt; SSL certificates, DNS, environment variables. Then blame the code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Know when every certificate expires.&lt;/strong&gt; Write the dates down before you touch anything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change one big thing at a time.&lt;/strong&gt; Two changes, one failure, endless guessing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy when people are awake.&lt;/strong&gt; Ideally the people who can fix it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Know your way back.&lt;/strong&gt; Before you ship, not after.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch it after you ship.&lt;/strong&gt; "Deployed" is not the same as "working".&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Google's SRE book lists three practices for safer changes.&lt;br&gt;
Progressive rollouts.&lt;br&gt;
Quickly and accurately detecting problems.&lt;br&gt;
Rolling back safely when problems arise.&lt;/p&gt;

&lt;p&gt;That's basically my checklist, written by people with far more sleep.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjvncm0c9gxd9npxgmlwy.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjvncm0c9gxd9npxgmlwy.webp" alt="A hand ticking items off a deployment checklist in a notebook" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@jakubzerdzicki" rel="noopener noreferrer"&gt;Jakub Żerdzicki&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/hand-checking-off-items-on-a-to-do-list-fXlL5I0IvK0" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Rollbacks: have a way back
&lt;/h2&gt;

&lt;p&gt;If you can't undo a change quickly, you're not deploying.&lt;br&gt;
You're gambling.&lt;/p&gt;

&lt;p&gt;One classic pattern is &lt;a href="https://martinfowler.com/bliki/BlueGreenDeployment.html" rel="noopener noreferrer"&gt;blue-green deployment&lt;/a&gt;, as Martin Fowler describes it.&lt;br&gt;
You keep two nearly identical production environments.&lt;br&gt;
One is live. The other gets the new version.&lt;br&gt;
You test the idle one, then switch the router over.&lt;/p&gt;

&lt;p&gt;If it breaks, you switch the router back.&lt;br&gt;
Fowler calls it "a rapid way to rollback".&lt;/p&gt;

&lt;p&gt;You don't need a fancy setup to steal the idea.&lt;br&gt;
Keep the old config. Keep the old build.&lt;br&gt;
Know the exact command that puts things back.&lt;br&gt;
Practise it once on a calm day.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monitoring and alerting: find out before your users do
&lt;/h2&gt;

&lt;p&gt;The worst way to discover an outage is from a user.&lt;br&gt;
The second worst is from a friend asking "is your app down?"&lt;/p&gt;

&lt;p&gt;The Google SRE chapter on &lt;a href="https://sre.google/sre-book/monitoring-distributed-systems/" rel="noopener noreferrer"&gt;monitoring distributed systems&lt;/a&gt; is a good start.&lt;br&gt;
It names four golden signals: latency, traffic, errors and saturation.&lt;br&gt;
Measure those and page a human when they look wrong.&lt;br&gt;
I'd add one more for small teams: certificate expiry dates.&lt;br&gt;
That gets you decently covered, according to the book.&lt;/p&gt;

&lt;p&gt;It also says something I love: "Every page should be actionable."&lt;br&gt;
An alert you ignore is just a very expensive ringtone.&lt;/p&gt;

&lt;p&gt;Later, I built a "Pager System" for Track My Academy developers.&lt;br&gt;
It's an internal real-time error and notification system.&lt;br&gt;
The idea is simple: problems should find developers, not wait to be found.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7r9z7k430pt4gqagrl0p.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7r9z7k430pt4gqagrl0p.webp" alt="A laptop showing monitoring dashboard graphs for latency and traffic" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@lukechesser" rel="noopener noreferrer"&gt;Luke Chesser&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/graphs-of-performance-analytics-on-a-laptop-screen-JKUTrJ4vK00" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Write the postmortem, and keep it blameless
&lt;/h2&gt;

&lt;p&gt;After the fix, the temptation is to sleep and never speak of it again.&lt;br&gt;
Don't.&lt;/p&gt;

&lt;p&gt;Write an incident postmortem.&lt;br&gt;
Google's chapter on &lt;a href="https://sre.google/sre-book/postmortem-culture/" rel="noopener noreferrer"&gt;postmortem culture&lt;/a&gt; puts it nicely.&lt;br&gt;
"Writing a postmortem is not punishment."&lt;br&gt;
It's a learning opportunity for the whole company.&lt;/p&gt;

&lt;p&gt;Their triggers include user-visible downtime and an engineer having to roll back.&lt;br&gt;
A multi-hour outage ticks both boxes with enthusiasm.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.atlassian.com/incident-management/postmortem" rel="noopener noreferrer"&gt;Atlassian's guide to incident postmortems&lt;/a&gt; is very practical.&lt;br&gt;
It covers a timeline, root cause, impact, metrics and action items.&lt;br&gt;
It suggests a review meeting within 24 to 48 hours of resolution.&lt;br&gt;
Then draft the write-up straight after.&lt;br&gt;
Wait longer and the details evaporate.&lt;/p&gt;

&lt;p&gt;Blameless doesn't mean nobody made a mistake.&lt;br&gt;
It means you fix the system so the next person can't make it.&lt;br&gt;
Even if the next person is, once again, me.&lt;/p&gt;

&lt;h2&gt;
  
  
  Was it worth it?
&lt;/h2&gt;

&lt;p&gt;Honestly? Yes.&lt;br&gt;
Not the outage. The outage was terrible.&lt;br&gt;
But I learned more in that one night than in a month of tutorials.&lt;/p&gt;

&lt;p&gt;Mistakes are expensive teachers.&lt;br&gt;
They're also very, very memorable.&lt;/p&gt;

&lt;p&gt;I'd still prefer the tutorials, though.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What are the most important production outage lessons for a small team?
&lt;/h3&gt;

&lt;p&gt;Change one thing at a time.&lt;br&gt;
Always have a tested way back.&lt;br&gt;
Monitor the basics so you hear about problems before users do.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can an expired SSL certificate take down a backend?
&lt;/h3&gt;

&lt;p&gt;Yes, and quietly.&lt;br&gt;
Once a certificate passes its expiry date, clients stop trusting the server.&lt;br&gt;
Requests fail, and it can look exactly like a code bug.&lt;/p&gt;

&lt;h3&gt;
  
  
  What should go in an incident postmortem?
&lt;/h3&gt;

&lt;p&gt;A timeline, the impact, the root cause and clear action items.&lt;br&gt;
Keep it blameless.&lt;br&gt;
Fix the system, not the person.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sre.google/sre-book/introduction/" rel="noopener noreferrer"&gt;Google SRE book: Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sre.google/sre-book/monitoring-distributed-systems/" rel="noopener noreferrer"&gt;Google SRE book: Monitoring distributed systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sre.google/sre-book/postmortem-culture/" rel="noopener noreferrer"&gt;Google SRE book: Postmortem culture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.atlassian.com/incident-management/postmortem" rel="noopener noreferrer"&gt;Atlassian: Incident postmortems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://martinfowler.com/bliki/BlueGreenDeployment.html" rel="noopener noreferrer"&gt;Martin Fowler: Blue-green deployment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Public_key_certificate" rel="noopener noreferrer"&gt;Wikipedia: Public key certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://letsencrypt.org/docs/faq/" rel="noopener noreferrer"&gt;Let's Encrypt FAQ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What next
&lt;/h2&gt;

&lt;p&gt;Curious how the product got built in the first place? Read &lt;a href="https://www.rahuldk.in/blog/the-app-that-arrived-from-2006" rel="noopener noreferrer"&gt;the app that arrived from 2006&lt;/a&gt;.&lt;br&gt;
Or how I learned the tools: &lt;a href="https://www.rahuldk.in/blog/dozens-of-email-accounts-and-zero-shame" rel="noopener noreferrer"&gt;dozens of email accounts and zero shame&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Running an academy? &lt;a href="https://www.trackmyacademy.com" rel="noopener noreferrer"&gt;Track My Academy&lt;/a&gt; handles attendance, fees, player analytics and parent communication.&lt;br&gt;
It's built by &lt;a href="https://www.trackmytech.in" rel="noopener noreferrer"&gt;TrackMy Tech&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Want to talk shipping, breaking and fixing things? &lt;a href="https://calendar.rahuldk.in" rel="noopener noreferrer"&gt;Book a call&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>ssl</category>
      <category>webdev</category>
      <category>startup</category>
    </item>
    <item>
      <title>How to win a hackathon, according to a tired judge</title>
      <dc:creator>Rahul Dhileep Kumar</dc:creator>
      <pubDate>Mon, 12 Oct 2026 04:30:00 +0000</pubDate>
      <link>https://dev.to/rahul_dk/how-to-win-a-hackathon-according-to-a-tired-judge-4dn0</link>
      <guid>https://dev.to/rahul_dk/how-to-win-a-hackathon-according-to-a-tired-judge-4dn0</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4q0j04zr58aj6j2pz2bd.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4q0j04zr58aj6j2pz2bd.webp" alt="A student demos a project on a laptop to a visitor across an exhibition table at a campus tech event" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cover photo: &lt;a href="https://unsplash.com/@evan_marvell" rel="noopener noreferrer"&gt;Evan Marvell&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/two-men-at-a-table-with-a-laptop-uzBZnacIKgQ" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;On 8 and 9 October, I sat on the other side of the table.&lt;/p&gt;

&lt;p&gt;I was on the jury of a hackathon at VISTAS.&lt;br&gt;
It was run by the Department of Computing Sciences and the Vels Innovation Council.&lt;br&gt;
More than 80 teams turned up.&lt;br&gt;
Over two days, I evaluated somewhere between 20 and 30 of them.&lt;/p&gt;

&lt;p&gt;I've been a hackathon participant.&lt;br&gt;
I've lost hackathons.&lt;br&gt;
I've won a couple too, which my &lt;a href="https://www.rahuldk.in/about" rel="noopener noreferrer"&gt;about page&lt;/a&gt; mentions with suspicious frequency.&lt;/p&gt;

&lt;p&gt;Now I've judged one.&lt;br&gt;
The personal story of that loop is in &lt;a href="https://www.rahuldk.in/blog/from-hackathon-loser-to-hackathon-jury" rel="noopener noreferrer"&gt;from hackathon loser to hackathon jury&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This post is the practical bit.&lt;br&gt;
How to win a hackathon, from someone who just spent two days scoring them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What hackathon judges actually see
&lt;/h2&gt;

&lt;p&gt;Here's the part nobody tells participants.&lt;/p&gt;

&lt;p&gt;Your judge isn't seeing your project in isolation.&lt;br&gt;
They're seeing it as team number seven.&lt;br&gt;
Or team number fourteen.&lt;/p&gt;

&lt;p&gt;Most teams in a judge's group share the same or similar problem statements.&lt;br&gt;
So the judge has already heard your problem explained.&lt;br&gt;
Several times.&lt;br&gt;
Usually in the same words.&lt;/p&gt;

&lt;p&gt;Around the fifth team, focus starts slipping.&lt;br&gt;
Not because judges don't care.&lt;br&gt;
Because judges are human.&lt;/p&gt;

&lt;p&gt;There's research on this, sort of.&lt;br&gt;
&lt;a href="https://en.wikipedia.org/wiki/Decision_fatigue" rel="noopener noreferrer"&gt;Decision fatigue&lt;/a&gt; describes decisions getting worse after a long run of them.&lt;br&gt;
The evidence for it is honestly mixed, so don't build a religion on it.&lt;br&gt;
But anyone who has judged fifteen pitches in a row will nod politely.&lt;/p&gt;

&lt;p&gt;Running order matters too.&lt;br&gt;
A &lt;a href="https://www.sciencedaily.com/releases/2005/03/050308102138.htm" rel="noopener noreferrer"&gt;Carnegie Mellon study&lt;/a&gt; found later performers got higher marks.&lt;br&gt;
That was Eurovision and figure skating, not hackathons.&lt;br&gt;
You can't choose your slot anyway.&lt;br&gt;
So the only thing you control is how fast you earn the judge's attention.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzvzxd0xce9umnyoagykg.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzvzxd0xce9umnyoagykg.webp" alt="A smiling student presents in front of a projected slide while a room of fellow students listens" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@tinasihgusti" rel="noopener noreferrer"&gt;Herlambang Tinasih Gusti&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/a-man-standing-in-front-of-a-group-of-people-3kc_75Rdgyk" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The first 30 seconds of your hackathon pitch
&lt;/h2&gt;

&lt;p&gt;Start like a person, not a slide deck.&lt;/p&gt;

&lt;p&gt;Give the judge a firm handshake.&lt;br&gt;
Ask them how their day is going.&lt;br&gt;
They'll appreciate it.&lt;br&gt;
It's probably been a long one.&lt;/p&gt;

&lt;p&gt;Then introduce yourself and your team.&lt;br&gt;
Clearly.&lt;br&gt;
Confidently.&lt;br&gt;
Names, and who built what.&lt;/p&gt;

&lt;p&gt;Then say three things, fast:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The problem statement&lt;/strong&gt; you picked, in one line.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The scope&lt;/strong&gt; you chose to tackle within it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your solution&lt;/strong&gt;, in one sentence a tired person can repeat.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it.&lt;br&gt;
You now have the judge's attention, and you've spent maybe thirty seconds.&lt;/p&gt;

&lt;p&gt;An &lt;a href="https://en.wikipedia.org/wiki/Elevator_pitch" rel="noopener noreferrer"&gt;elevator pitch&lt;/a&gt; usually runs thirty seconds to two minutes.&lt;br&gt;
Your opening should sit at the short end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Show the prototype early
&lt;/h2&gt;

&lt;p&gt;The demo is the hackathon.&lt;br&gt;
Everything else is decoration.&lt;/p&gt;

&lt;p&gt;Plenty of hackathon rulebooks say this out loud.&lt;br&gt;
The &lt;a href="https://github.com/UHCodeRED/rules" rel="noopener noreferrer"&gt;UH CodeRED rules&lt;/a&gt;, for example, strongly encourage a demo.&lt;br&gt;
They say pitches and presentations are discouraged.&lt;br&gt;
They even say teams aren't judged on the quality of their pitch.&lt;/p&gt;

&lt;p&gt;Not every hackathon works that way.&lt;br&gt;
But almost every judge prefers seeing a thing work to hearing about it.&lt;/p&gt;

&lt;p&gt;So get to the prototype quickly.&lt;br&gt;
Show the main flow, end to end.&lt;br&gt;
One happy path that works beats five half-loaded features.&lt;/p&gt;

&lt;p&gt;If something breaks, say so and move on.&lt;br&gt;
Judges have seen broken demos before.&lt;br&gt;
I've broken &lt;a href="https://www.rahuldk.in/blog/the-night-i-broke-production" rel="noopener noreferrer"&gt;production&lt;/a&gt;, so I'm in no position to judge that part.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjraurs8wakt2q6yqt020.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjraurs8wakt2q6yqt020.webp" alt="Four college students crowd around a laptop on a podium as they get their project demo ready" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://www.pexels.com/@shibraj-deb-429139665" rel="noopener noreferrer"&gt;Shibraj Deb&lt;/a&gt; on &lt;a href="https://www.pexels.com/photo/men-looking-in-laptop-16070143/" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to win a hackathon: stay on the problem statement
&lt;/h2&gt;

&lt;p&gt;This one hurt to watch, because I used to do it.&lt;/p&gt;

&lt;p&gt;Teams drift.&lt;br&gt;
They start on the given problem statement.&lt;br&gt;
Then they bolt on a chatbot, a dashboard and a dream.&lt;br&gt;
By the end, the judge can't find the original problem.&lt;/p&gt;

&lt;p&gt;Your score is usually tied to the problem you were given.&lt;br&gt;
Solving a different, cooler problem rarely earns bonus points.&lt;br&gt;
It mostly earns confused faces.&lt;/p&gt;

&lt;p&gt;Before you build anything, write the problem statement on a sticky note.&lt;br&gt;
Every feature must point back to it.&lt;br&gt;
If it doesn't, it waits for version two.&lt;br&gt;
I run my own life off sticky notes, as &lt;a href="https://www.rahuldk.in/blog/three-monitors-one-monster-can" rel="noopener noreferrer"&gt;my desk setup post&lt;/a&gt; proves.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't over-engineer your hackathon project
&lt;/h2&gt;

&lt;p&gt;The second classic mistake: building a cathedral in two days.&lt;/p&gt;

&lt;p&gt;Microservices.&lt;br&gt;
Three databases.&lt;br&gt;
A custom login system nobody asked for.&lt;br&gt;
And a demo that loads forever.&lt;/p&gt;

&lt;p&gt;Judges don't score your architecture diagram.&lt;br&gt;
They score what they can see working.&lt;/p&gt;

&lt;p&gt;Pick the boring stack you already know.&lt;br&gt;
Build the smallest thing that proves your idea.&lt;br&gt;
Spend the saved hours polishing the one flow you'll demo.&lt;/p&gt;

&lt;p&gt;When I started building &lt;a href="https://www.trackmyacademy.com" rel="noopener noreferrer"&gt;Track My Academy&lt;/a&gt;, the first night ended with a landing page.&lt;br&gt;
Not an architecture.&lt;br&gt;
A landing page I actually liked.&lt;br&gt;
Small, finished things build momentum.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the jury doesn't want to hear
&lt;/h2&gt;

&lt;p&gt;Some things quietly drain your score.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Facts the judge already knows.&lt;/strong&gt; They've read the problem statement. Probably several times today.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Statistics read off a slide.&lt;/strong&gt; Especially ones an AI tool produced five minutes earlier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A tour of everything you made with AI.&lt;/strong&gt; Use AI tools, absolutely. Just don't make them the pitch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trying to impress instead of explain.&lt;/strong&gt; Big words, no working product. Judges spot it instantly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On AI: I'm a fan.&lt;br&gt;
I once chased free AI trials across &lt;a href="https://www.rahuldk.in/blog/dozens-of-email-accounts-and-zero-shame" rel="noopener noreferrer"&gt;dozens of email accounts&lt;/a&gt;.&lt;br&gt;
But the judge is scoring your thinking, not your prompt history.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsgl93x8tw3isydvptg60.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsgl93x8tw3isydvptg60.webp" alt="An evaluator holds a pen over a blue clipboard, ready to write down scores" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Photo: &lt;a href="https://unsplash.com/@philhearing" rel="noopener noreferrer"&gt;Phil Hearing&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/hand-holding-pen-over-a-blue-clipboard-eXcF6L9pEug" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A simple hackathon pitch structure
&lt;/h2&gt;

&lt;p&gt;If you want a template, steal this one.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Hello (10 seconds).&lt;/strong&gt; Handshake, how's your day, team intro.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Problem and scope (20 seconds).&lt;/strong&gt; One line each. No essays.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solution (15 seconds).&lt;/strong&gt; One sentence, plain words.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Demo (most of your time).&lt;/strong&gt; One flow, start to finish, working.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How you built it (30 seconds).&lt;/strong&gt; Your stack, and one hard thing you solved.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What's next (10 seconds).&lt;/strong&gt; One honest line. Then stop talking.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then let the judge ask questions.&lt;br&gt;
Answer them directly.&lt;br&gt;
"I don't know yet" is a perfectly good answer.&lt;br&gt;
Making something up is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hackathon tips for the questions round
&lt;/h2&gt;

&lt;p&gt;Questions are where good teams pull ahead.&lt;/p&gt;

&lt;p&gt;Listen to the whole question.&lt;br&gt;
Answer the question that was asked, not the one you rehearsed.&lt;br&gt;
Let the person who built that part answer it.&lt;br&gt;
Keep answers to a few sentences.&lt;/p&gt;

&lt;p&gt;If a judge points out a flaw, agree if it's true.&lt;br&gt;
Then say how you'd fix it.&lt;br&gt;
That shows judgement, which is exactly what they're measuring.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How do hackathon judges score projects?
&lt;/h3&gt;

&lt;p&gt;It depends on the event, so read the rules first.&lt;br&gt;
Common criteria are technical difficulty, design, completion and impact.&lt;br&gt;
Most judges weigh what they see working more than what they hear.&lt;/p&gt;

&lt;h3&gt;
  
  
  How long should a hackathon pitch be?
&lt;/h3&gt;

&lt;p&gt;As short as the rules allow.&lt;br&gt;
Aim for under a minute before the demo starts.&lt;br&gt;
Then let the working prototype do the talking.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do you need a perfect product to win a hackathon?
&lt;/h3&gt;

&lt;p&gt;No.&lt;br&gt;
You need one flow that clearly works and clearly fits the problem statement.&lt;br&gt;
Polish that, and be honest about the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Go build something
&lt;/h2&gt;

&lt;p&gt;If you're heading into a hackathon, good luck.&lt;br&gt;
Keep it short, keep it focused, and show the thing.&lt;/p&gt;

&lt;p&gt;I build products at &lt;a href="https://www.trackmytech.in" rel="noopener noreferrer"&gt;TrackMy Tech&lt;/a&gt;, and I'm always happy to talk shop.&lt;br&gt;
&lt;a href="https://calendar.rahuldk.in" rel="noopener noreferrer"&gt;Book a call&lt;/a&gt; if you want a second opinion on your idea.&lt;br&gt;
Or read about &lt;a href="https://www.rahuldk.in/blog/the-app-that-arrived-from-2006" rel="noopener noreferrer"&gt;the app that arrived from 2006&lt;/a&gt;, my favourite cautionary tale.&lt;/p&gt;

</description>
      <category>hackathon</category>
      <category>career</category>
      <category>beginners</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
