How Software Gets Built
After this lesson, you will be able to:
- Describe the full journey of software from idea to live product, and name the key stages involved
- Compare three ways teams organize their work (Waterfall, Agile, and Kanban) and explain when each one fits best
- Explain the Scrum framework — its team roles, to-do lists, and regular meetings — well enough to participate in your first work cycle
- Read a project board and understand what Epics, Stories, Tasks, and Bugs mean in a real project
- Understand why teams use version control (Git), code sharing platforms (GitHub), code reviews (Pull Requests), and automated testing/deployment (CI/CD) to ship software reliably
Before You Start
#The Big Picture — From Idea to Live Product
Every expert was once a beginner. The people who built Instagram, Zomato, and ChatGPT once had no idea what a "sprint" or a "pull request" was either. You are learning the same playbook they use every single day. By the end of this lesson, you will be fluent in the language of software teams.
Someone in Bengaluru has an idea for an app that helps college students split hostel expenses. Six months later, it is on the Play Store with 50,000 downloads. What happened in between?
The journey from idea to live product follows a surprisingly consistent path, regardless of whether you are building a hostel expense app or a billion-dollar platform like Swiggy. Here are the stages:
- Idea — Someone identifies a problem worth solving
- Requirements — The team figures out exactly what to build (and what NOT to build)
- Design — Architects plan the system; designers create the screens
- Code — Developers write the actual software
- Test — QA engineers verify it works and hunt for bugs
- Deploy — The software goes live for real users
- Maintain — Fix bugs, add features, keep it running
The big question is: in what order do you do these steps, and how rigidly do you follow them? That question is the entire reason software development methodologies exist.
A startup wants to build a food delivery app. They are not sure exactly what features users want, and user preferences may change fast. Which methodology should they pick?
#SDLC — Software Development Life Cycle
Let us walk through the three most important ones.
#Waterfall — The Step-by-Step Approach
- Requirements (2 months) → Design (1 month) → Development (4 months) → Testing (2 months) → Deployment (1 month)
- No going back. Once requirements are signed off, they are locked.
- Everything is documented in massive specification documents before anyone touches code.
#Agile — Iterate Fast, Adapt Constantly
Agile was born in 2001 when 17 frustrated software developers met at a ski lodge in Utah and wrote the Agile Manifesto. They were tired of Waterfall projects failing because the world changed faster than the plan.
The core idea: build in small increments, get feedback after each one, and adapt. Instead of spending 10 months building the entire product and then showing it to users, you build a tiny piece in 2 weeks, show it to users, learn from their feedback, and adjust.
- Waterfall approach: Spend 2 years building a car. Deliver the car. Hope the customer still wants it.
- Agile approach: Week 2: deliver a skateboard (it moves, it works). Week 4: deliver a scooter (faster, has handles). Week 8: deliver a bicycle (even better). Week 16: deliver a motorcycle. Week 24: deliver the car.
- Working software over comprehensive documentation
- Responding to change over following a plan
- Customer collaboration over contract negotiation
- Individuals and interactions over processes and tools
#Kanban — Continuous Flow, No Sprints
Kanban comes from Japanese manufacturing (Toyota invented it for their assembly lines in the 1940s). Instead of working in fixed 2-week sprints, work flows continuously. Think of it as a conveyor belt rather than a series of boxed time periods.
- A board with columns: Backlog → To Do → In Progress → Review → Done
- Each card represents a task
- Work-in-progress (WIP) limits: You can only have, say, 3 items "In Progress" at once. This prevents the team from starting 20 things and finishing none.
- New work gets pulled from the backlog whenever someone finishes their current task
#Scrum Deep Dive — The Most Popular Method
Scrum is the most widely used Agile framework in the world. If you join a software team in Bengaluru, Hyderabad, Pune, or anywhere else, there is an extremely high chance they use some form of Scrum. Understanding it before your first day gives you a genuine advantage.
#The Scrum Team
A Scrum team is small — the 2020 Scrum Guide says typically 10 or fewer people in total. It has three roles:
#The Three Artifacts
#The Four Ceremonies
Scrum has four recurring meetings (called "ceremonies" or "events"):
The whole team meets. The Product Owner says "here are the most important items." The developers say "we can realistically finish these 8 items in 2 weeks." They discuss, negotiate, and agree a Sprint Goal plus a forecast of the items they expect to deliver. This is the plan for the next 2 weeks.
Forecast is the right word and it is worth getting right. The team commits to the goal, not to finishing every item on the list. Sprints where one item does not land are normal and are not a failure. A team punished for missing its forecast simply pads the next one, which makes every future plan less useful than the one before it.
The team stands up (literally, to keep it short) and each person answers three questions:
- What did I do yesterday?
- What will I do today?
- Is anything blocking me?
That is it. No problem-solving, no deep discussions. Those happen offline. The standup is a sync point, not a meeting.
The team demos what they built to stakeholders (the Product Owner, managers, sometimes actual users). "Here is the new checkout flow. Here is the search feature. Here is the bug fix for the payment timeout." Stakeholders give feedback, and that feedback goes into the Product Backlog for future sprints.
The team looks inward: What went well? What went badly? What should we change? This is how the team improves its own process. Maybe "our standups are running too long" or "we need better test data" or "pairing on complex tasks worked great, let us do more of that."
#A Typical Sprint
Here is what a 2-week sprint looks like in practice:
| Day | What Happens |
|---|---|
| Monday (Day 1) | Sprint Planning: team picks items from backlog, breaks them into tasks |
| Tue-Fri (Days 2-5) | Daily standups at 9:30 AM. Developers code, test, review each other's work |
| Mon-Thu (Days 6-9) | Continue building. Features get completed and demo-ready |
| Friday (Day 10) | Sprint Review: demo to stakeholders. Then Sprint Retrospective: team reflects |
Then the cycle repeats. Every 2 weeks, the team delivers working software.
#Jira — Where Work Lives
Jira is the most popular project management tool in the software industry. Built by Atlassian (an Australian company), it is used by over 100,000 organizations worldwide. If you work in software, you will use Jira (or something very similar like Linear, Asana, or Plane).
#The Hierarchy of Work
Work in Jira is organized in a hierarchy:
The breakdown looks like this: one Epic contains many Stories. Each Story might have sub-Tasks. Bugs float around independently, filed whenever someone discovers a problem.
#Anatomy of a Jira Ticket
Every ticket in Jira has:
| Field | What It Means |
|---|---|
| Title | A short description: "Add password reset flow" |
| Description | Detailed requirements, acceptance criteria, design links |
| Assignee | Who is working on it (one person) |
| Status | Where it is in the workflow: To Do, In Progress, Code Review, Done |
| Priority | How urgent: Critical, High, Medium, Low |
| Story Points | How complex the work is (not how long it takes — more on this below) |
| Sprint | Which sprint this ticket belongs to |
| Labels/Tags | Categories like "frontend", "backend", "design", "tech-debt" |
#The Board
The Jira board is the visual representation of work. Columns represent stages:
A developer's day revolves around this board. You grab a ticket from "To Do," move it to "In Progress" when you start, move it to "Code Review" when you open a Pull Request, and it moves to "Done" once it passes review and QA.
#Version Control — Git and GitHub
Imagine 10 people working on the same school project report in a shared Word document. One person edits the introduction while another deletes it. Someone copies the file to their desktop, makes changes, and emails it back with the filename "final_report_v3_FINAL_really_final_v2.docx." Chaos.
#Git — Save Points for Your Code
- Commit — Save a snapshot of your code at a specific moment. "Save point: added login page."
- Branch — Create a parallel universe where you can experiment without affecting the main code. If the experiment works, merge it back. If it does not, delete the branch. No harm done.
- Merge — Combine changes from one branch into another. "Take the login page from my branch and add it to the main project."
- Revert — Go back to any previous save point if something breaks. "The new payment feature caused a crash. Revert to yesterday's version."
Git is the default nearly everywhere, and it is the one to learn first. You will still meet exceptions: some very large companies run their own systems, and studios working with large binary assets such as game art often use Perforce, because Git handles big binaries badly. The concepts carry over, so learning Git is not wasted anywhere. It was created in 2005 by Linus Torvalds (the same person who created Linux).
#GitHub — Where the Code Lives Online
#Pull Requests — The Collaboration Ritual
Here is how a typical change flows in a real team:
1. Local — Write code on your laptop
2. Branch — git checkout -b feature/my-feature (work without breaking main)
3. Commit — git commit -m "add login page" (save a snapshot)
4. Pull Request — Ask teammates to review your code on GitHub
5. Merge → CI/CD — Tests run automatically, code deploys to production 🚀
- A developer creates a branch (e.g.,
feat/password-reset) - They write code and make multiple commits on that branch
- When the feature is ready, they open a Pull Request (PR) on GitHub — "Hey team, I built the password reset feature. Here are my changes. Please review."
- Other developers review the code — they read through every change, leave comments, suggest improvements, catch bugs
- Once approved, the PR gets merged into the main branch
- The branch gets deleted (its job is done)
Pull Requests are where a huge amount of learning happens on real teams. Senior developers leave comments explaining why a certain approach is better, juniors ask questions, and everyone's code quality improves over time.
You do not need to master Git commands right now. Just understand the concept: Git lets multiple developers work on the same codebase without stepping on each other's toes, and Pull Requests are how changes get reviewed and approved.
Try simulating a basic Git workflow in code. This shows how commits build a history and branches let you work in parallel:
Tests · Try adding a third branch called feat/settings with two commits. Merge all three branches into main.
#CI/CD — From Code to Live Product
You have written your code and it has been reviewed and merged. Now what? How does it actually reach users?
#Continuous Integration (CI)
Every time a developer merges code, an automated system kicks in:
- The code gets compiled (built)
- Hundreds or thousands of automated tests run — unit tests, integration tests, end-to-end tests
- Code quality checks run — linting, security scans, performance checks
- If anything fails, the developer gets an alert: "Your code broke 3 tests. Fix it before merging."
This happens on every single code change, multiple times a day. The word "continuous" means it never stops running. The goal: catch bugs immediately, not 3 months later when the software is in production.
#Continuous Deployment (CD)
The difference is that one button. Delivery is far more common, and if you join a bank, an insurer or a medical device company, expect a named person to approve every production release, because the approval itself has to be recorded. No manual uploads. The pipeline handles everything.
The full flow looks like this:
Developer pushes code → Automated tests run → If all pass → Deploy to staging (internal testing) → Deploy to production (real users)
#Why This Matters for You
Even if you are building ML models, not web apps, CI/CD matters. When you train a model and want to deploy it as an API that an app can call, it goes through the same pipeline: automated tests verify the model works correctly, the API gets deployed to servers, and monitoring ensures it keeps working.
Understanding CI/CD is the difference between "I built a model in a Jupyter notebook" and "I shipped a model that 10,000 users rely on every day."
#What Day 1 At a Real Company Actually Feels Like
You've now read about sprints, Jira, Git, and CI/CD in theory. Here's what it actually feels like the first time. Most lessons skip this part. The first week is mostly emotional, not technical.
#Anatomy of a Code Review (What Your First PR Will Get)
Here's what real comments on a junior's PR look like, with the meta-translation underneath each:
"Consider extracting this into a separate function — it's getting hard to follow."
"What happens ifuseris null here?"
"Have you tested this with non-ASCII input?"
"There's a utility for this inutils/dates.ts."
"This works, but consider the performance implication with 10,000+ rows."
"LGTM" or "Approved"
#The Hidden Skill: Reading the Codebase
The single most underrated skill on a tech team isn't writing code. It's reading code. Senior engineers spend 4 hours reading for every 1 hour writing. Here is how to read a new codebase efficiently:
src/, tests/, docs/, scripts/. The structure is a map of how the team thinks.index.html or App.tsx. For a Python service, main.py or app.py. From the entry point, follow imports outward to understand the system.git log -p path/to/file.ts shows you every change ever made to that file, with the author. Reading the last 5 commits before you edit something tells you what others have tried and what they learned.#Key Takeaways
- Software development follows a lifecycle: Idea → Requirements → Design → Code → Test → Deploy → Maintain. The methodology you choose determines how rigidly you follow these steps
- Waterfall is sequential and rigid (finish each phase before starting the next). Agile is iterative (build small pieces, get feedback, adapt). Kanban is continuous flow (no sprints, just a steady stream of work)
- Scrum is the most popular Agile framework: a small team works in 2-week sprints with four ceremonies (Sprint Planning, Daily Standup, Sprint Review, Sprint Retrospective) to deliver working software every cycle
- Jira organizes work into Epics, Stories, Tasks, and Bugs — a developer's day revolves around picking up tickets, moving them through the board, and getting code reviewed
- Git tracks every change to code (commits, branches, merges) and GitHub hosts it online. Pull Requests are how teams review and approve changes
- CI/CD automates the journey from code to production — every change is automatically tested, and if all tests pass, it ships to users without manual intervention
Your team has been using Waterfall for 6 months, but clients keep changing requirements every few weeks. Features get built, thrown away, and rebuilt. Morale is dropping. What methodology should the team consider switching to?