I work in a small team (4-5 developers) on a single project. Every member of our team is developing a different functionality from our project and they are highly independent. In fact, some members use technologies that other member doesn't know about. It's still a single project and there a lot of common business logic in it.
In addition, most of the members are completely unaware what and how the others are doing. Somehow, we manage to avoid code replication (credits for our team-leader, but even he is not completely aware what is happening). I wonder, what is a good practice to keep the whole team on the track what is going on. For example if some one from the team quits or is missing when an important fix should be made - it's difficult for the others to handle.
We have a policy, for conducting code-reviews, but only the team-leaders and one member of the team participates in it. The other "regular" members do not take part, there.
Also, we have a "newslist" for checkin-s committed in the source control by our members, but this seems too boring to deal with and it looks like nobody is taking time to read what others have just committed (and it's not effective, to be fair).
So, I wonder what is a good practice in this matter. What experience do you have? Is there a solution at all ?
Best Regards!
EDIT: Let me clarify a bit. Our team is working for more than 2 years and the project is almost 5 years old. So, we can't start agile development, although we could you some agile practices (like stand-up meeting, I find it very useful indeed).
Also, our team is a part of a bigger company, so we have established a team-building practices. And we don't hate each other :) - we are friends, talking about social life and activities. The professional talks is what we are missing.
Thanks to all of view who gave their answers and I'm open to more ideas!