Friday Links: Programming deflation, story points, and vapers

Hey there.

Here are 4 links I thought were worth sharing this week:

#1. With the raise of AI, we’re in a programming deflation (5min). “We’re watching the basic economics of software development transform in real time.”

#2. Typing isn’t (and hasn’t been) the bottleneck of coding. AI is making us thinkers instead of typers (4min).

#3. One of the things I hate about software engineering is estimation and story points. And guess what? Story points answer nothing (4min).

#4. And here’s how someone hosted a website on a disposable vaper (6min). Cool!


And in case you missed it, I wrote on my blog about the hardest lesson I learned migrating legacy code (again) (2min) and the one rule junior coders should follow to adopt AI (1min).


(Bzzz…Radio voice) This email was brought to you by… Check my Gumroad store to access free and premium books and courses to level up your coding skills and grow your software engineering career.

See you next time,

Cesar

Want to receive an email with curated links like these? Get 4 more delivered straight to your inbox every Friday. Don’t miss out on next week’s links. Subscribe to my Friday Links here.

The Hardest Lesson I Learned Migrating Legacy Code (Again)

I definitely can’t escape from legacy code.

This time, it’s an old WebForms application written in VB. Yes, that old. It’s a family business. Dad started it. And years later, his two sons got involved. It’s funny when during the standup meetings I hear, “Hey Dad…”

The problem

The code is a mess. Sorry, I mean it needs a lot of care.

I don’t blame them. It was the easy route with WebForms. Just drag and drop, double-click, and dump all your logic. It’s just like that framework encouraged people to copy and paste.

I’ve worked with at least 3 legacy apps with WebForms. All of them were pure spaghetti code. Zero best practices. “Coincidence? I don’t think so.” (Insert Toy Story character wearing a chicken suit)

The code needs care, but the database needs even more attention.

It doesn’t have foreign keys, and queries don’t use JOINs. If you want to join two tables, one of them has a string column with a list of IDs separated by a pipe (12|34|56). You fetch records separately and then loop through them to join them. Arrggg!

And please, let’s not talk about stored procedures…

The lesson

But from this project I’ve learned that if we don’t pay close attention to the initial database design, the backend side gets wildly crazy. A lot of hacks and patches to make up for a poor DB design.

There’s no need to go crazy with database normalization. Just:

  • Every table should have an auto-incremented ID.
  • Use a separate table instead of a column with a list of IDs.
  • Keep data types consistent across tables. All “Status” columns should be either BIT or an INT. Otherwise, conversions could go wild.
  • Add audit fields (“createdAt” and “updatedAt”) to every table.

I wish they had followed those simple guidelines 10 years ago.

But more surprisingly, I learned that you don’t need a perfectly clean codebase to have a successful business. You will suffer? Sure. But running a business and writing good code are two completely separate skill sets.

The freshly graduated me thought I was only going to always create systems from scratch following all principles and practices to the tee. But working with legacy code taught me more than any coding course.

That’s why I made it one of the 30 proven strategies in my book, Street-Smart Coding: 30 Ways to Get Better at Coding. That’s the roadmap I wish I had when I was starting out.

Grab your copy of Street-Smart Coding here

The Simplest Way to Validate a Product Idea (Without Wasting Time and Money)

A long time ago, a friend asked me for a quote on a custom piece of software.

She and her friend wanted to start a marketing agency. And they wanted to build custom software to run it.

The problem? They didn’t have any savings or capital. And even worse, they didn’t have anyone to sell their service to. It was too early to build software.

I’ve been there too, on a different scale, coming up with value propositions and website copy for a freelance business I didn’t have yet. Later, it died with a single phone call.

After immersing myself in business podcasts and books, I’ve learned to:

  1. Come up with simple and cheap experiments to test a business idea
  2. Slap a price tag on whatever we’re building to see who buys

And simple experiments can validate big ideas.

The other day I watched a Diary of a CEO episode featuring a Netflix cofounder. How they validated their idea? He mailed a CD to his business partner to see if they could run a Blockbuster alternative by email. It was a cheap experiment. It worked.

Run experiments to learn, to grow, and to build something people really want.

7 Content Experiments I Ran in August—and What Happened

Back in August, I shared 7 content experiments I wanted to try.

As part of my daily routine, I write 10 bad ideas every day to keep my creativity muscles in shape. I wrote 10 ideas that day, but only posted 7.

I acted on some of those ideas. Here’s what I actually did:

#1. I redesigned the interior of my C# Idioms book. For the first version, I used Canva. Nothing wrong with Canva. But I wanted a more professional, less hobbyist design. So I added a copyright notice, an introduction, a table of content. The basics of a publishable book. Now, it’s available for $0.99. Next move? Offer it via Amazon.

#2. I uploaded all my coding courses to Gumroad. I have to admit the experience of Gumroad as a student isn’t as polished as Udemy for video courses. But it works well enough to show a video lesson with a description. Now, they’re available here: C# NullReferenceException Demystified, Getting Started With LINQ in C#, and Mastering C# Unit Testing with Real-world Examples.

#3. I packaged all my beginner’s material into the “C# Fundamentals Bundle.” That’s an ebook and more than 2 hours of video lessons to learn C#, at 20% off. It’s available here: C# Fundamentals Bundle.

After launching these, I notice a challenge: Gumroad doesn’t have a powerful discoverability feature. As creators, we can’t simply rely on Gumroad showing our products to users. At least, we shouldn’t expect it. We have to redirect traffic there ourselves. Now, my only source of traffic is my newsletter.

#4. I changed all prices to end in .99 and increased the suggested prices., I offer my books and courses as “Pay what you want.” I’ve received $1, $5, $7, $10, and $20 as payments. So I changed my current prices based on those anchor points.

Results? 10 free downloads and no sales. Not that bad. I learned about interior book design and practiced my copywriting skills. That’s helpful for any future project.

Junior Coders: The One Rule You Should Follow to Adopt AI

“Is using AI totally forbidden?”

“When and how should I use it?”

“What’s your take on vibecoding?”

I was on a firechat with a community of new coders last week. Those questions kept popping up. They all wanted to know about AI.

I get it! There’s a lot of noise:

  • AI is taking our jobs.
  • “%X of code is generated by AI at $BigCorp.”
  • Some guy shared on Twitter/X that he built an app with no coding skills and now he’s retired, drinking martinis in the Caribbean.

Don’t be discouraged by those headlines. (There’s a lot of nuance behind them.) We’re living in the best time to learn coding.

You won’t like it, but…

Here’s the rule:

Don’t use AI to generate code until you’re comfortable coding on your own.

If you only copy and paste what ChatGPT, Cursor, or $NewestFastestLLM gives you, you’re in trouble. You need to know if what that tool is spitting out is good code. And for that, you need your own judgment.

When in doubt, think of AI as a powerful calculator in math class. It makes you faster, but you still need to know how to solve equations. The thinking part is still yours.

AI can spit out code in seconds, even with a bad prompt. But coding is more than syntax. It’s also about teamwork, clear communication, and problem solving.  That’s why I wrote Street-Smart Coding: 30 Ways to Get Better at Coding, a practical guide to the skills that actually make you a better coder. It’s the roadmap I wish I had when I was starting out.

Get your copy of Street-Smart Coding here