I think CS is one of the busiest majors. There is a lot of coursework involved, and some concepts are difficult to understand. There are projects and exams all the time, and you get stuck in your dorms or the library to finish the programming assignment due in a couple of hours. In short, you don't have a lot of spare time when you are majoring in CS. If I tell you to join student clubs and project teams in your precious spare time, would you be willing to? Likely not. Heck, I thought it was a waste of time in the beginning. But after convincing myself to join a few, I changed my mind. I hope that this post can help you understand where I'm coming from as well.
Being a huge introvert myself, I admit that interpersonal skills aren't the sharpest tool in my shed. Speaking to too many people makes me tired, and after a day of interacting with people, I'll need some time alone to recharge. However, during high school, I learned that being an introvert is not an excuse to neglect my soft skills. I just wanted to hone my claws to become the sharpest ones around, but I realized too late that no one wanted to stay near a feral wolf. Learn to communicate effectively. Practice active listening. Become used to the uncomfortable position of leadership. The best way to practice is to join clubs and work with other people.
You probably all heard of this: "Jack of all trades, master of none. But still better than a master of one." It turns out that this applies not only to technical skills but soft skills as well. Your ability to write good code and solve problems is extremely valuable. This is your primary role as a software developer. If you can use a variety of tools such as different languages, frameworks, version control, and CI/CD, then kudos to you! Achieving this during your student days is no small feat. However, without soft skills, people won't be willing to work with you. You are essentially a powerful sword with a thorny grip. Being technically adept is a great thing, but soft skills are the ones that get you closer to other people and will give you more chances.
I'm sure most CS students have a personal project that they have worked on. If you just started your CS journey, however, there may be weak spots in your resume because of your lack of personal projects. One way to mend this is to join clubs and work on a piece of software. You can work on a personal project instead, and this is a perfectly feasible option. However, I think joining a club is better for a couple of reasons:
It shows that you are familiar with a certain tech stack.
It improves your ability to traverse through large codebases.
You get used to branching, forking, fixing merge fails, etc.
You feel a sense of responsibility, which can be hard to get when working on a personal project.
Documentation becomes second nature (hopefully).
Also, please apply what you've learned in lectures to your project! The tears you've shed while studying data structures and algorithms should be put to good use. The best way to learn something is to try it out by yourself. Implement some algorithms to reduce complexity. Try using hash tables instead of looping over lists. The more you use it, the easier it will get. Grinding through Leetcode problems is great and all, but wouldn't it be more fun to see how these concepts could be used in the real world?
I've mentioned this earlier, but joining a club or a project team has some benefits when compared to coding alone. Working on a piece of code in an organization can be a bit nerve-wracking at first because you are held accountable for the code you write. Deadlines are a thing, and you will have to explain your progress and roadblocks to your team lead. While it is a bit scary, it is also a major point of growth.
Taking on responsibility is a positive feedback loop. Whether you like it or not, you will tend to finish more tasks if there are hard deadlines. We tend to work better under slight pressure. As you finish more tasks, you show your professionalism in the subject. More people will trust you because you've shown them that you are capable of working under pressure. This in turn gives you more opportunities to work on more important, cool tasks. This cycle repeats itself and will help you find purpose in the early days of your developer career.
But what about personal projects? They rely on a lot of self-motivation and passion for it to be successful. This is also a type of responsibility. You are holding yourself accountable to complete a certain task by a certain deadline. However, unless you are very disciplined, you tend to be more lenient on yourself. There is a negative feedback loop, contrasting to the positive loop mentioned earlier. If you have ever worked on a personal project, chances are that you had that one bug that needed to be fixed, but you were too lazy to fix it, hampering the development of other functions, which in turn makes you less motivated to work.
Working on a group project will help you become a more responsible person, and this can help you with your personal projects as well.
It may seem obvious for a lot of people that joining clubs is a good idea, and that this post is addressing a problem that doesn't exist. However, I know some friends who are leaving their dorms only when there are in-person classes. They will return to their home afterward and never step foot outside, doing nothing else but schoolwork and games. It may work for some people, but I think your time during university can be used for something greater, and joining clubs is one of the best ways to make something out of it.