The answer is it depends. For tiny systems, a developer can effectively test his/her code because there is not much else to interact with. For large systems, however, a developer can only practically test that his/her module works independently according to the distributed specifications. After individually tested modules are integrated into a complex system, their inter-module side effects can easily lead to ``bugs''.
As a result, it is often necessary to have a QA team that assures the integrated system behaves correctly (consistent with the specifications).