It's not the load that breaks you down, it's the way you carry it ~ Lou Holtz
As you may have noticed from my beautifully rhymed title to this article, I am here to talk about how I cope with the code ( haha did it again ). I will be talking about the different habits adopted over time and the ones discarded in order to find out what works best for me. Basically about how I found my CODE.
- While solving the problem
- When stuck for hours
- Developing good coding practices through open-source contributions
- The Rabbit Hole of Advice
- Don't Believe the Hype
While Solving the Problem
The most prevalent/popularbad_habit
for beginner to intermediate programmers is jumping straight to code before actually understanding the approach(es) for the problem throughout its edge cases and complexities. The flexibility we have with pen and paper does contribute a lot to our cognitive processes as we can picture out our thoughts in the best way possible. But another bad habit I have faced within myself is not thinking out loud while solving the problem.
Ever since high school, I have found that reading or communicating the problem to myself out loud and actually acknowledging the things I don't understand in a more convincing way has helped me gain up to 50% more concentration on any cognitive task than just being inside my own head. This is a habit that helped me a lot in my high school day's but I never thought of implementing that into my coding practices, but when I did the perks were amazing.
Doing this I can articulate my thoughts a lot better, but this also requires a lot more energy than usual in exchange for less time consumed getting distracted with intense study sessions. When I tend to lose focus, I just raise my voice while figuring out the approach for the problem so I can quickly get my attention back to the task at hand.
There is the occasional โ, but I try not to rely on it. Especially because of the lockdowns in our area it is not readily available. Coffee works more in terms of getting me out of the occasional burnout within a week and that extra push to sit on the desk with the mug as they show in every "looky programming video" on youtube to get some stereotypical drive of being a programmer going.
When stuck for hours on end
I generally have a rule that if I am stuck on a problem for 2 hours I'll just take a break from it and go for a walk and watch some anime episodes. The episodes work especially since they are short ( like 18-20 minutes ). When I get back to work after that, I feel a lot less frustrated and have a better insight into how to solve the problem, or how to learn about the things needed to solve.
I used to have the all encompassing disciplinary attitude towards coding from everything I've seen online. But with time, I have realised that it's all about the experience we get from each problem we encounter, and get stuck at and are not able to solve and look for their solutions online that builds the connections needed to be a better programmer in the future when we face a problem having a similar pattern. If I am stuck for 2 hours with no solution in sight I just google the approach and try to explain the implementation to myself using all the tools I have at my disposal. I especially like using Epic Pen which i use to just brainstorm my approaches on my laptop screen. It can get admittedly messy but it works like a charm when I am stuck on complex logic problems and also in understanding the implementations
Developing good coding practices through Open Source contributions :
I especially recommend this to everyone. I mean if it "works for you" or not, this is something that has immensely helped me in areas like
- Writing cleaner code
- Developing good documentation habits through comments
- Reviewing my code by others and understanding my shortcomings
- Algorithm efficiency.
As you may have noticed from the above screenshot, I like to explain my code in an extensive way so anyone can understand it after they have gone through the logic for the said problem. In the last few weeks that I have been uploading my code to open source projects, I have developed this habit that has honestly built my logical thinking with DSA in a less one-sighted way since now I have to write my code in a way that is understandable for everyone. This is an indirect sort of way to use the Feynman technique but I am glad I picked it up.
I also have a repository of mine named DSA-Docs where I push the problems i solve every day. You may contribute to it as well if you want to :).
The Rabbit Hole of Advice
The internet has a number of rabbit holes, from the vtuber rabbit hole, to all kinds of games and tv shows and reaction videos to that tv show moment that you want to relive by watching others react to it ( I am calling myself out here lol ). What's weird is out of all the rabbit holes I have gone into in the past years, the one of advice did the most harm to me as a student. Keep in mind that when i say "rabbit hole", I am in no way trying to offend anyone who does pass advice on computer science and their experiences online.
It is common for people who are beginners to be constantly looking for advice on "how to learn code, what are the best ways to code, what is the day in the life of their favorite coding youtuber like" and so on. Admittedly there is no harm in that, but I have found myself being sabotaged to the point that all I did was watch and read advice online instead of actually going and doing the thing in the way I was supposed to.
In the first year of college life it is common to feel confused and swayed by all of it, but if that habit of constantly seeking advice goes on for over a year ( even when you've heard the same thing a million times ) that's the rabbit hole.
Computer science being a difficult degree and the open endedness to the community needs a lot of self-control to not be swayed by, we explore within the first year or so on all kinds of stacks but eventually we need to pick one thing and get good at it no matter how exciting some other field may look from the sidelines.
Don't believe the hype
Ok i admit it, this article has gone in a completely different direction. Well this might be a point that I have already covered in the previous one. About all the excitement that comes with computer science and technology. But at the end of the day we need to understand that all of the hype may not be for us. So we need to identify what we absolutely HAVE TO DO, and separate it out from the other influences that in the long run don't benefit us in our resume or job description in any way. We do not 'need' to follow the trend of "Learning for the sake of learning".
Conclusion
I really went from sharing my coding practices to talking about my mindset with the code. Did not expect the article to turn out this way but alright. So that's about it, do like and share this article if you find this helpful in any way :) signing off.