In fact, every time you stumble upon a programming challenge, the first question you would probably ask is: "Ok, how do I do that?". Sometimes, the image below makes totally sense:
Therefore, if we could presume that your level of knowledge for some particular language and the difficulty of that particular challenge are classified as intermediate, two particular situations could happen:
- Google that question, opening links you judge more relevant (most of them from Stack Overflow) and trying to find a similar solution that fits the challenge you are trying to solve.
- Spend some time sketching and designing the required steps for solving the chanllenge so you could develop easily using your pre-existing knowledge.
In this supposition, estabilshing the difficulty and the level of knowledge, the possible resolutions of the challenge would vary. For instance:
- You could be very good adapting someone else's code, so you thought that the best way to accomplish the challenge is by finding a similar problem and trying to fit its code inside yours;
- You might not completely understood the problem, so you preferred to look for a similar code;
- You wanted to search right away, just to have an idea of possibilities you could approach to develop. These ideas would help you to develop a better logic to apply in your code;
- Etc, etc, etc.
Indepentent of your preferable choice, if, at any monent, the image above comes to your mind, you are probably programming by the WRONG way!
The main concept of programming is creation, that means the capacity of the code to be made in order to create a desirable functionality. However, the understanding behind that code is completely fundamental, mainly to keep a good level of maintainance! In addition, programming is totally related to the logic of how the instructions of the code will be executed.
In summary, pushing yourself harder against the problem that seems unsolvable at the first sight is the first step to achieve the concept of being a good programmer. In other words, don't be scared to create something from nothing! This is one of the best ways to guide you through the solution, even though your code might not follow the best practices and/or might not be well-optimized enough. After that, suplementar reading and third-party code could greatly help you to improve your work.
The determination of developing a full logic by your own point of view will make programming a creative activity instead of exhaustive.