It depends on what you're trying to say.
Let's start with:
The implementation we have made before may become a cause of code duplication.
Does "the implementation" refer to the current implementation, or are the two implementations identical?
If so, then it should be:
The implementation, which we have made before, may become a cause of code duplication.
If "the implementation" refers to a previous implementation, then it should be:
The implementation that we made before may become a cause of code duplication.
People often suggest rather strongly to omit "that" when used as a subordinating conjunction; I prefer to leave it for the sake of clarity. There are instances in which omitting it introduces ambiguity.
As for your question about pauses: pause at the commas, if they are used.
Peripherally, you may want to remove the "have", as it implies an ongoing process--as if you are continuing to build the original implementation.
Here's an article with more detail.