This is a response to the following email.
Asslamualaikum, how are you doing?
I got your email from http://programmermap.com/city/1185241/dhaka.
You are a very busy person I know, yet if you make some free time, please reply back. Your reply will make my day.
I am here for a reason. I hope you will not make me disappointed.
I am a student of CSE dept 1st year 2nd semester. I did very bad in 1st semester and my result was a total disaster. I am trying to improve myself. I thought CGPA will not matter anymore. What is your opinion?
In this semester, I have to do a project in C language and it was really fun for me. So, I decide to learn JAVA and create Android apps. Is it a good decision?
I have acquired some contest programming experiences. I solved 100+ problems in CF and Uva. But my progress disappointed me and I am not doing competitive programming now. My friend circles are the good problem solver, their progress is one of the main reason to make me hopeless. What should I do? I just can’t think, can’t think about my future.
If I make any guilty in my talk. Please forgive me as you are a kind person. Thanks.
Don’t start believing in those bullshits such as “cgpa doesn’t matter” because it might matter. You don’t know yet what possibilities and opportunities you are going to miss out because of poor cgpa. Also it represents your intellectual capabilities to some extent. You are still at the very beginning stage of your journey. Try to achieve a cgpa as high as possible. At some point in your life, cgpa will become irrelevant. But not at this moment. As a student your primary job is to study and your cgpa represents how well you are at performing that job. Whether cgpa matters or not, having a high cgpa won’t hurt.
Developing android apps is fine as long as you have a very strong grasp on fundamental CS concepts. However, being a student of second semester, I don’t think you already have that and I don’t think it is wise to go for any kind of app development, whether android or desktop or web. This is your best time to get your basics right. Learn data structures, algorithms and implement them properly. If you don’t have basic concepts of CS, developing android applications won’t take you very far. If your plan after graduation is to get into the software industry, then know that most of the top tier companies will test you based on the core concepts. Tier 2 and tier 3 companies have a different scenario though.
I would suggest you to focus on competitive programming while maintaining a good cgpa. Competitive programming will prepare you to take on any kind of programming challenge and give you a strong foundation. You will become confident and whenever faced with a programming challenge, you will know that you can solve it. I am ripping the benefits of being a competitive programmer and I can’t stress enough how important it is. Not that people don’t succeed without it. It just makes everything a whole lot easier.
Don’t compare your performance with others. Compare with yourself. Make sure you are improving day by day. Keep making progress. Solve problems regularly. Try new challenges. Attend contests. Up solve problems you failed to do during contests. Keep doing this for at least the first three years. You will be amazed to see your reach after your third year. Then if you feel like moving towards development, do so in your fourth year. Or just continue competitive programming. You will have to do projects for various courses either way.
Losing hope and being disappointed is very common for cs students. What matters is the ability to push through. The difference between professionals and amateurs is that professionals keep doing what needs to be done even if they don’t feel like it while amateurs look for motivation and energy. Have a professional mentality and it will take you a long way.