It is a no-brainer that Data structure and algorithm are an integral part of any software system, but there are some issues that arise from just putting all your energy into solving leetcode problems.

Yeah, you can now reverse a Binary Search tree and also create a linear runtime graph algorithm. But there are some dark sides you don't pay attention to.

When you are trying to solve a leetcode question, first you try to come up with your own solution, which in most case are actually unoptimized.

Here are some of the dark sides of solving leetcode problems

- No proper commenting, which mostly affect you while working with other developers in a large codebase.
- Urge to find a one-size fit for all given test cases, this is a problem in most product teams when you are trying to use a single solution for all criteria, businesses pivot, and user behaviors change, so also your algorithm needs to have that dynamic nature, where it can stand the test of time.
- Your main focus is to get that 80% + efficiency when compared to other submissions, while this may be beneficial in some context, in teams, there is a high chance this perfectionist nature leads to slowing down your whole team, and eventually lead to you doing most of the work and you have a higher tendency of burnout or worst case implode.

Instead of putting all effort into acing all leetcode challenges and contests, you can create some solutions to existing problems, most often than not, you will see the real-life application of all the leetcode problems while building your solution.

Here is a youtube video showing a list of some projects you can work on.