I’m going to try this strategy. I am thinking about creating another account on codewars just for practice. Maybe that will help me with remembering algorithms and improve my code efficiency. Remember, I need to do very well so I can command a good paying salary. Income is key here to escape my retail enslavement.
So here’s what your workflow should look like: find a problem, and try to solve it (repl.it is often your friend here). If you can’t solve it within 30 minutes, then just look at the solution. Whether you solve it or not, read the best solution and try to parse it. It will often be kind of mysterious and use methods that you don’t know. Go look up those methods in the documentation, play around with them, make sure you understand what they do and why the solution works. Make sure you get it.
This next step is essential. Now do the problem again and try to re-implement the ideal solution that you just read. Do it from memory. If you forget, go back and look at the solution, and then start over. DON’T SKIP THIS STEP FOR ANY PROBLEM, NO MATTER HOW SMALL.
If you do this, you will become a killer. I promise. I did it, and coming into my program I was way ahead of anyone in my mastery over Ruby. I also advocated this approach to my best friend, a former paramedic with no coding experience whatsoever. When the TAs read his coding test, they told me “your friend is a beast. No wonder, I guess.”
This method works for several reasons. 1) It ruthlessly trains you in the art of solving problems. If you want to get better at solving coding problems, the best way to do it is just solving lots of coding problems. Most of solving these problems is just pattern-recognition anyway, and it builds up a lot of exposure to many different problem patterns. 2) It teaches you tons of methods in the standard library, and makes you use them and grapple with them. This imprints them on your unconscious mind stronger than just reading docs or groping through tutorials. 3) By typing out the best solutions from memory, it’ll teach you by hand to write good code style and intelligent, concise techniques. Don’t underestimate the power of visceral learning. Just by typing out the code that someone else came up with, you’ll absorb the learning through your fingers.
If you do this, by the time you enter your program, you’ll be a programming wizard. Take my word for it.