I’m writing this because I’ve been worried that I can’t even solve Level 1 problems on Programmers very well, and I struggle even with easy problems. Since enlisting in the military, I’ve started studying algorithms through Programmers. Although it hasn’t been long, I briefly used Programmers in my first year of university while studying web Python programming for an exam, and it seems that the same chronic problem I experienced back then is happening again now. So I thought carefully about what my problems might be.
My concerns
- I write code based on the idea I came up with after looking at a problem, but strangely, I don’t get the right answer, and I often don’t know why. I want to know why my thinking is wrong and why my code is wrong, so I tried printing every single line of the code, but when I still couldn’t find the problem, I felt like I was going crazy. There’s no one to give me feedback. Because of this, I’m still unsure whether the process I went through during my first semester of freshman year—spending a whole day thinking about one problem—was actually efficient. That’s why I decided to set a limit of one to two hours for the point at which I feel that thinking any further is meaningless.
Since time and space are limited in the military, I spend about one or two hours thinking about a problem, and if I can’t solve it, I look at someone else’s answer. But it feels similar to the emptiness I feel when I can’t solve a math problem and end up looking at the solution manual.
When solving math problems, I received help from a private tutor, using the tutor as my question shuttle(?) to resolve my questions and problems. I felt that I was growing and producing actual results. With algorithms, though I don’t know whether it’s because I only started recently, I feel like I can’t find my direction. People around me say things like, “I studied on my own,” “I’ve been doing it since I was young and am skilled enough to participate in the Informatics Olympiad,” “It’s entirely possible to do it alone by Googling,” and “Try making programs yourself and approach it in a top-down way.” Maybe because I’ve only seen cases like these, I still don’t know whether I’m doing well.
-
I’m mainly weak at programming mathematical principles and at string-related problems. I know I should target my weaknesses, but there are many things I find disappointing.
-
After thinking about a problem immensely and then looking at the solution and realizing how incapable I am, I start to wonder whether the way I’m studying is actually right.
-
I’m unsure how I should deal with problems I don’t know how to solve or problems I got wrong. In math, I repeatedly made an error notebook or tried solving problems I had gotten wrong again, but with algorithms, I’m unsure whether I should simply move on and encounter many new problems, or continue organizing things like an error notebook.
-
How can I study on my own without a “teacher” like my private math tutor?
Solutions I came up with
-
I need a teacher who can listen to my thought process and point out what’s wrong. (A question shuttle) 1-1) Older brother / friends around me -> I can’t ask questions frequently. Almost all of my questions are at the level of using someone as a question shuttle, so their time is limited -> Should I take turns asking different friends? 1-2) Asking questions to a university teaching assistant 1-3) Actually finding a private tutor 1-4) A study group 1-5) Asking questions at a café -> Impossible in real time / limits to clearly communicating what I mean because it’s remote
-
Learn algorithms in a top-down way by making various programs and looking at their source code -> Learn by looking at their structure, but I don’t feel that my algorithm skills would improve very much
-
Keep studying the way I am now, even if it feels like my head is breaking. -> I’m worried that my skills aren’t improving even though I’m studying the way I am now. -> Consistency is important
An article I found while thinking about this
In a way, programming seems similar to studying mathematics.
-
Understanding the basic concepts, solving basic problems
-
Solving practice problems, memorizing patterns in problem-solving <- Checking whether you understood
-
Solving advanced problems, applying and internalizing concepts based on patterns <- Solving more difficult problems based on those concepts
-
Solving in-depth problems <- Problems that take time to solve because they include all the related concepts, or require you to exercise your imagination
-
Progressing through a new chapter in the same way
Perhaps you are in the process of solving practice problems in step 2 or advanced problems in step 3. In the cases I know of, even if progress is slow in step 3, solving problems and repeating the process leads to math scores of 80 or higher. And if, while working through step 4’s in-depth problems, you feel joy or pleasure despite the solutions taking a long time and being difficult, I think that accumulated foundation eventually turns you into someone who gets a perfect score of 100 in math.
If, during your school days, you glanced at the solution manual and moved on while solving difficult problems, or moved on without feeling any joy or excitement even after solving a problem, it probably means that life felt difficult or that you didn’t particularly like math.
There’s no need to compare yourself to and become discouraged by a friend who studied ahead and is somewhat good at steps 2 and 3. I think aptitude and suitability are revealed in step 4 and in step 5, where you have to keep studying new chapters.
If you think about it a little more, when considering your career after becoming a programmer, you’ll have to enjoy learning new things constantly in order to keep making progress, right?
Please share the opinions of the experts as well!