A number of things make CodeGym the best online course to learn how to code in Java from scratch (in our eyes at least): carefully planned course structure, practice-first approach, enormous number of tasks (over 1200), exciting and funny storytelling, social features, etc. But we like to think that us going extra mile to help our students succeed is what makes CodeGym the best. Our mission is not just to help you learn Java and find a coding job after (or while still in the middle of the course), but to support your development, both personal and professional, with the appropriate knowledge and information.
You start with decomposition, which is separating a problem into a number of smaller problems that are easier to solve one by one.
Then you proceed to a specific task/problem, focusing exclusively on the information that is important to solve it and ignoring all the rest.
Next step is looking for similarities between the problem you are currently working on and other problems that have been solved previously (with the solution available). The goal is to find patterns that can be applied to your current task.
And finally, having the results of applying previous steps in place, you develop an algorithm for a step-by-step problem solution. An algorithm then can be executed by a computer (or your brain, which is the ultimate computer solving tasks in your life).
Decomposition is quite a simple but powerful technique, which can help you to deal with problems/tasks that seem too complex at first glance, and thus often cause procrastination and other difficulties. The key here is to train your brain to use decomposition on a regular basis, dividing a task to a number of smaller tasks that are easier to solve. Even though decomposition may seem like a very simple and even obvious method, you’d be surprised how many people are not aware of it, which makes it so much more difficult for them to start working on big, global tasks (like learning Java, for example).
Knowing how to apply abstraction is a powerful ability if you know the technique and have trained your brain to use it unconsciously. Abstraction is about focusing exclusively on the information that is required to solve the task while ignoring everything else. Used in combination with decomposition, it is basically the method to approach pretty much any problem or issue in your life. When dealing with strictly programming tasks, abstraction helps to concentrate and avoid your brain being exhausted too quickly.
Pattern recognition is quite an important skill in coding, as it allows you to solve tasks much faster by applying thinking patterns that your brain is familiar with and comfortable using. It is also a powerful technique to apply to general life problems: just try to analyze any issues you are facing in your life and find (and borrow) patterns from those parts of your life that work satisfactory, transferring them to the current problem.
When you think about it, our life is all about forming algorithms. We call them habits. Our brain tends to rely on habits every single day, just because it is more efficient and thus, practical. The only problem is most of us tend to do this unconsciously, which often results in forming wrong and harmful algorithms (we call them bad habits or addictions). Knowing how to form useful algorithms consciously can be an extremely beneficial life skill, allowing you to achieve your goals and be successful. When it comes to programming, knowing how to form an algorithm to solve a particular problem in the most quick and efficient way is what differentiates a person who just knows how to code from an experienced professional computer programmer.