... In the begining there was the programming ... and programmers wrote the code ... sounds good and everything seems to be working ... but there appeared testers, found quite a few bugs and everything turned to usual.
So the work of creating any application can be described in short. Hence the sources of information are boosting with jokes about complicated relationship between testers and programmers. However both sides agree that they have the same ultimate goal to make a perfect working product for the customer.
Why is it not possible to develop software without bugs?... that might be possible but terribly expensive. Any software written for high-tech processes, such as space or military industry, are highly expensive. Moreover, the customer's feedback update is not often provided. The changes in the original code of the program tend to cause the bugs. The programs for the mass market are written for slender means, frequently changed due to changing customer's requirements, written by different people in various programming languages, by people with experience or without ... actually too many "if" statements.
The lack of templates generates a lot of ways to do the same work differently. While there are many options many mistakes will occur and as a result - testers will always have job.