I believe that developers can, and should, test code. With only 4 developers on your team, you can probably get by without hiring a tester. Unless of course, you have lots of extra budget. :)
That said, there are some tremendous advantages you get by putting a tester on your team. You should have an open discussion with your team and management about the value (ROI) of putting a tester in the mix, or adjust the priorities of your current programmers to include QA.
It is NOT intuitive that spending more time on QA activities will reduce the time to develop and release a software product. The chart below shows the relationship between defect rate and development time (and therefore cost). I got the graph and data from Steve McConnell's book "Rapid Development".
McConnell makes the sound argument that, "...higher quality (in the form of lower defect rates) and reduced development time go hand in hand." I agree. And time translates very clearly to money.
If you allocate testing time from the normal workload of your 4 developers, you can attain the benefit of McConnell's principle. My guess is that your team would achieve the goal of finding defects much faster with a dedicated tester working with you.
There will always be the problem of perceptual blindness. Programmers tend to focus on the items that are in their frame of reference. It is human nature. Don't believe me? I recommend you read this blog post about perceptual blindness, and watch the video. The video was created by Daniel J. Simons from Visual Cognitions at the University of Illinois. Simons is a researcher that is now famous for his discovery. It's not specific to software development - perceptual blindness is a reality in every aspect of life. It does, however, help explain why developers have a tendency to miss bugs in their own code. Especially when you move beyond unit testing and into system testing.
When you watch the video, be sure to focus on counting only the white team passes. I was astounded at what I learned from watching it. Seeing is believing. I won't spoil the punchline by spilling it all here, but I'm now convinced that I have blind spots as a developer that a tester would catch.
One other concept you should consider: QA professionals are much more effective when involved early in the development process. It is easier and cheaper to avoid coding bugs when design or requirements defects are discovered before developers build those defects into a system. The cost of a requirements error is 50 times higher if not caught until acceptance testing. That's 5,000% more cost than necessary. A quality assurance pro will play a key role in uncovering such errors. Of course, developers can find those errors too, but we programmers usually aren't looking for them.
Testers can bring value to your small team simply because they are expected to focus on quality. If you get a good one, he/she will be much more than just a whiz with an automated testing tool. They think a little differently.
I recommend that you seriously consider including a tester in all aspects of the software development life cycle. Finding a good one is very similar to finding your developers. If your team is working virtually, then you have plenty of excellent QA talent to explore. Search for and check out independent testing consultants and read their blogs. You can get a good idea of their ability by how well they cover testing topics, their experience, their participation in industry groups, and perhaps certifications.
You might want to hire an independent consultant to try out the impact of a tester on your team. It may not be a fit for your culture. But if the value becomes obvious, then you can keep paying the consultant. Some consultants may not want a full-time gig, however I'm sure they can point you to others that are hungry to work with you.
If you want some introductions to testing consultants, please sed me an email [email protected].
Good luck.