Topic 39

How Teams Build Software

Concept

When you use an app, it's easy to picture a single clever person who sat down, wrote it, and finished. That picture is almost never true. The apps you rely on were built by groups of people, changed over months and years, and they're still being changed right now.

This topic sketches that reality — software as a team effort that never quite ends — because it's the thing that makes the next few topics, and a whole stack of later courses, finally make sense. Once you see why building software with other people is hard, you'll see why so many tools exist just to manage it.

Software is many people changing one shared thing, on and on
Many developersa whole team
One shared codebasethe source of truth
Evolving softwarenever finished

Many hands on the same code

A real app is too big for one person. The app on your phone might be hundreds of thousands of lines of code — the written instructions that tell the computer what to do — far more than any single person could write, remember, or maintain alone.

So a team builds it. Different people work on different parts at the same time: one person on the login screen, another on payments, a third on the part that talks to the server. They aren't taking turns; they're all working in parallel, every day.

That word for the whole body of an app's code has a name worth knowing: the codebase. It's all the instructions for one piece of software, gathered in one place. When a team "works on the codebase," they mean they're changing that shared pile of instructions together.

Software is never finished

Here's the part that surprises most people: an app is never truly done. The version on your phone today is not the version from a year ago, and it won't be the version a year from now. Software keeps changing for as long as anyone uses it.

It changes because the world around it changes. Users ask for new features. Mistakes turn up and need fixing. A phone gets a new screen size, a new rule arrives, a security hole is found. Each of those is a reason to open the codebase and change it again.

So "building software" isn't a one-time act of creation. It's an ongoing activity — a team returning to the same codebase week after week, adding, fixing, and improving. Keeping that in mind reframes the whole industry: most of the work isn't writing a program once, it's tending one that's already alive.

One shared codebase, one source of truth

If a dozen people are all changing the same instructions, there has to be one official copy that everyone agrees is the real one. That official copy is called the source of truth: the version the running app is actually built from, the one that settles any argument about "what does the code really say right now."

Everyone works from that shared copy. A developer takes the current code, makes a change, and folds it back in so that their work becomes part of the one official version. The next person builds on top of that. Bit by bit, the shared codebase grows out of many small contributions.

The problems this creates

Working this way solves the size problem but creates new ones. If two people change the very same line of code, whose change wins? If someone's change quietly breaks a part they never touched, how does anyone notice before users do? If everyone is editing the one official copy at once, what stops them from overwriting each other into chaos?

Think of a group writing one book together. Everyone is assigned chapters, but they all share the single manuscript. Without rules — who edits what, how edits get combined, how you keep an earlier draft — two authors will eventually rewrite the same paragraph in different ways, and the book becomes a mess. The team needs a system, not just goodwill.

Software teams hit exactly that problem, and the rest of this chapter is about the systems built to solve it. The need to track every change without overwriting each other leads to version control, the subject of the next topic. The need to check changes and deliver them safely leads to the testing-and-shipping idea after that. Those tools didn't appear for fun — they're answers to the mess that "many hands on one codebase" creates.

Common Confusions
  • "An app is written once and then it's finished." Almost never. Software keeps changing for as long as people use it — fixes, features, and patches arrive for years.
  • "One brilliant person writes the whole thing." Real apps are too large for that. They're built by teams working on different parts of one shared codebase at the same time.
  • "Everyone just edits the same file freely whenever they like." That would cause constant overwriting. Teams need a system to combine changes safely — which is exactly what the next topics are about.
  • "The codebase is the running app." The codebase is the instructions; the running app is what those instructions become when a computer follows them. The team changes the instructions, then ships an updated app.
Why It Matters
  • This is the reason version control tools like Git exist at all — to let many people change one codebase without overwriting each other.
  • It explains the whole field of DevOps and CI/CD: systems for testing and shipping a constantly changing codebase reliably.
  • It reframes the app updates you ignore — they're a live team changing the codebase and sending you the newer version.
  • If you ever work near a software team, this is the mental model behind nearly everything they do all day.

Knowledge Check

Which statement best describes how real software is built?

  • A team works on one shared codebase, changing it over months and years
  • One expert writes the entire app alone, then never touches it again
  • It's written quickly, released once, and considered permanently complete
  • Each developer keeps a separate copy and they're never combined

What does "the codebase" refer to?

  • All of an app's code, gathered in one place the team works from
  • The finished app as it appears once you install it on your phone
  • The server computer in a data center that the app runs on
  • The one developer who is in charge of writing the program

Why do software teams need systems for coordinating their work?

  • Many people change one shared codebase, so without rules they overwrite each other
  • The codebase never changes at all, so the rules just keep it locked and untouched forever
  • Writing code is slow, so the systems exist mainly to help people type the code out faster
  • Apps don't run on real machines, so all of the work has to be faked very carefully

You got correct