In my experience, a non-compete clause will rarely serve a legitimate purpose. You can stop one employer to join a competitor - who will then just hire someone else. And theThe employees that you might really not want to lose, they won't accept such a non-compete clause anyway. And the ones who accept it are likely the ones who you would love to move to a competitor:-)
You will mostly find non-compete clauses in companies run by amateurs, who somehow imagine evil employees destroying their business by running to a competitor, while in reality their non-competes drive good employees away who might actually help making their business succeed.
Some people will tell you that such a clause cannot be enforced. That may be true, but you can be sued, and it costs you money and time.
The best way is to state absolutely clearly that you will not accept this non-compete clause in your contract. You might not get this job, but there are plenty others.
PS I note you are in Germany. By law, the ex-employer needs to pay “reasonable compensation” if they stop you from taking a job. For example the salary you are losing. Ask them if they are happy to pay your salary for four years, that may change their mind.
PS. Don’t argue about details like the definition of “competitor” for two reasons: First, you don’t want to accept the non-compete clause at all. Two, the more vague it is, the better for you in court should it go there. Because anything unclear in a contract is interpreted against the ones who wrote the contract.