---
title: "Bug"
description: "A bug is a defect in software that makes a program behave incorrectly or crash. Learn the main bug types, the bug life cycle and how teams find them."
url: "https://nodea.io/en/glossary/bug"
lang: "en"
updated: "2026-07-13"
---

# Bug

> A bug is a defect in software — a flaw in code, configuration or design that makes a program behave differently from what was intended, or fail entirely.

A **bug** is a defect in software: a flaw in the source code, configuration or design that makes a program behave differently from what its authors intended — wrong results, erratic behavior or an outright crash. Bugs are an unavoidable by-product of building software; mature engineering does not promise zero defects, it builds processes that catch them early and limit the damage of the ones that slip through.

## How the bug life cycle works

In organized teams a defect follows a formal path: a report (with reproduction steps, expected vs. actual behavior), triage (severity and priority), assignment, a fix, code review, regression testing and closure. By nature, bugs fall into recognizable families:

- **syntax errors** — caught by the compiler or linter before the code ever runs,
- **logic errors** — the program runs but computes or decides incorrectly; the hardest class to spot,
- **runtime errors** — unhandled exceptions, null references, division by zero,
- **race conditions** — concurrency defects that appear intermittently under load and vanish in the debugger,
- **regressions** — features broken by later, seemingly unrelated changes,
- **security bugs** — defects an attacker can weaponize, tracked publicly as CVEs.

## Practical use — finding and fixing bugs

The developer's core loop is [debugging](https://nodea.io/en/glossary/debugging): reproduce the failure, narrow the cause (debugger, logging, bisecting Git history), fix it, and add a test that keeps it fixed. At the process level, teams defend in depth with [unit tests](https://nodea.io/en/glossary/unit-testing) and integration tests in CI, static analysis, code review, and production error monitoring (tools like Sentry) that aggregates real-user exceptions and reveals a bug's true blast radius.

When reporting a bug, quality beats speed: include the environment (version, OS, browser), minimal reproduction steps, expected and actual results, and logs or screenshots. Reproduction is usually the most expensive part of a fix, and a precise report shortens it dramatically. Security-relevant defects deserve a separate, confidential channel — increasingly a formal [bug bounty](https://nodea.io/en/glossary/bug-bounty) program.

### Why is a software defect called a bug?

Engineers used "bug" for technical faults as early as the 19th century — Edison used the word in his letters. Computing folklore added the famous 1947 incident, when Grace Hopper's team taped an actual moth found in a relay of the Harvard Mark II into the logbook as the "first actual case of bug being found".

## Related

- [Debugging](https://nodea.io/en/glossary/debugging)
- [Unit testing](https://nodea.io/en/glossary/unit-testing)
- [Bug bounty](https://nodea.io/en/glossary/bug-bounty)
- [Refactoring](https://nodea.io/en/glossary/refactoring)
- [SDLC](https://nodea.io/en/glossary/sdlc)

---

Languages: [pl](https://nodea.pl/pl/slownik-pojec/bug.md)  
Site index: [llms.txt](https://nodea.io/en/llms.txt)
