I was going to comment on Falcon's excellent answer, but had too much to say to use a comment.
Design patterns are good, but complex.
As other have noted, well written code will use design patterns, even if not intentionally implemented. Design patterns are observed, not invented. The simpler the design patterns tend to fit more cases.
The complex design patters are solutions to complex problems. It is often better to use the appropriate design pattern than to invent your own complex solution.
Shoehorning a problem into a design pattern in an anti-pattern. If the pattern doesn't fit the problem it shouldn't be used.
Implementing design patterns need more sophisticated developers
and which in turn raises project costs.
More sophisticated developers may come at a higher salary. However, they should come with higher productivity. There has been research showing huge productivity differences between programmers. Would you pay 50 percent more from someone four or five times as productive?
More sophisticated developers are less likely to introduce costly bugs into your software. This will reduce testing costs in addition decreasing rework to remove bugs.
Their code will usually be easier and cheaper to maintain in cases where bugs are found, or functionality needs to be extended.
On the other hand, they make code neat and clean.
Design patterns are one of several tools which will make your code neat and clean. They also provide proven solutions to common problems. There will be plenty of opportunity on most projects to use inventiveness on problems that don't fit well known design patterns.