Topic 01

Software, a Program, and a Product

Concept

When someone says they "wrote some software", it's easy to picture a finished thing — an app on your phone, ready to use. But between a few lines of code that work and an app millions rely on, there's an enormous distance. Three words mark the points along it: a program, software, and a product.

People use these three as if they're the same. They're not, and the differences are the whole reason this course exists. Get them straight now and everything ahead has somewhere to land.

A quick comparison to hold onto: a recipe is a program — instructions that, followed, produce a result. A working kitchen is software — the recipe plus the ingredients, the tools, and everything needed to actually cook. A restaurant people come back to is a product — a kitchen someone runs, depends on, and keeps improving night after night.

A Program: Code That Runs

A program is a set of instructions a computer can follow — written by a person as code, which is just text in a language the computer understands. Run the program and the computer does what the instructions say: add these numbers, show this page, save this file. That's it. A program is the part everyone pictures, and the smallest piece of the story.

Software: Everything Around the Code

Software is the program plus everything that makes it usable and trustworthy. The same instructions, yes — but also the data they work on, the settings that tell them how to behave, the tests that check they're correct, the documentation that explains them, and the steady work of fixing and updating them over time.

This is why "it works on my machine" is a running joke among developers. Code that runs once, for the person who wrote it, is a program. Software is code that keeps working — for other people, on other machines, as the world around it changes. The gap between those two is where most of the real work lives.

A Product: Software People Rely On

A product is software that someone depends on — with real users, a plan for what comes next, and a lifespan measured in years. It has to keep working not just today but every day, handle people doing unexpected things, and get better over time without falling over.

A product is a commitment, not a size. It can be small. What makes it a product is that people count on it, so it can't simply stop, break quietly, or be abandoned the moment the person who built it loses interest.

Why the Difference Matters

"Just write the code" describes the program. The leap to software, and then to a product, is everything else: design, teamwork, testing, shipping, running, and supporting it. Each of those is a chapter of this course. Seeing them as separate stages — not one undivided act of "coding" — is the first real step into the discipline.

Take the running example you'll follow all book. Cadence is a habit-tracking app a small team is building. The two hundred lines that mark a habit as done are a program. Those lines plus the saved habits, the settings, the tests, and the docs are the software. And the app real users open every morning — expecting it to be there again tomorrow — is the product. The whole book is about making that last leap, on purpose.

Common Confusions
  • "Software is just the code." Code is one part. Software is the code plus its data, settings, tests, and docs — and the ongoing work to keep it all working.
  • "If the code runs, it's done." Running once on your own machine makes it a program. Making it keep working for other people, as things change, is the hard part that's still ahead.
  • "A product is just a bigger program." A product isn't defined by size but by people relying on it. A tiny app can be a product; a huge program nobody depends on isn't.
Why It Matters
  • It explains why "just write the code" is only a small slice of the job — and why the other thirteen chapters of this course are not optional extras.
  • Knowing software is more than code is what makes tests, documentation, and process feel necessary rather than like busywork.
  • The jump from program to product is the exact thing employers pay developers for — anyone can make code run once.

Knowledge Check

What best describes a "program" as the term is used here?

  • A set of coded instructions a computer follows to produce a result
  • Software that real users depend on and that's improved over years
  • The data, settings, tests, and documentation that surround and support the code
  • The team of people and the process used to build an app

Why is "it works on my machine" a problem rather than a success?

  • It shows the code ran once for its author, but software has to keep working for everyone, everywhere
  • It means the developer's computer is far too powerful, so the software only runs on high-end machines
  • It means the program runs too slowly to be useful to anyone else
  • It proves the software is already finished and ready for users

What makes something a "product" rather than just software?

  • People rely on it, so it has users, a plan for the future, and a lifespan
  • It contains a very large amount of code
  • It is sold for money rather than given away free
  • It is written in one particular programming language rather than in another one

You got correct