Found this article and aside from it's kinda funny, it also explains the bug well
The life of a software bug may be described as follows. A bug is born when a
person makes an
error in some activity that relates to software
development, such as defining a requirement, designing a program, or writing
code. This error gets embedded in that person's work product (requirement
document, design document, or code) as a
fault.
As long as this fault (also known as a
bug or
defect) remains
in the work product, it can give rise to other bugs. For example, if a fault in
a requirements document goes undetected, it is likely to lead to related bugs in
the system design, program design, code, and even in the user documentation.
A bug can go undetected until a
failure occurs, which is when a user
or tester perceives that the system is not delivering the expected service. In
the system test phase, the goal of the test engineer is to induce failures
through testing and thereby uncover and document the associated bugs so they can
be removed from the system. Ideally the life of a bug ends when it is uncovered
in static or dynamic testing and fixed.