Before you start implementing something, you generally need to do some research/planning, but be sure to balance that with actually taking action (executing/implementing).

Research

Research on how others before you have done a similar thing. What problems did they run into? What solutions are available to solve the problems? What are the advantage/disadvantages of each solution? Can the solutions be combined?

Plan

Plan on how you are gonna do your implementation. Which of the above problems do you anticipate facing? Which of the above solutions will you employ? Maybe do a little object oriented design.

Execute (Action)

But, be sure not to freeze during the research/planning steps. Even if you don’t understand everything 100%, it’s ok to just get started. You did your due diligence with researching/planning, the rest of it you’ll figure out as you execute!

It is advantageous if you follow good software engineering design principles (such as no code duplication, keeping components cohesive/loosely coupled, not violating liskov substitution principle, etc) because even if you kind of screw up during your implementation, you’ll be able to refactor/fix it. Code that has been built with good software engineering principles in mind is easier to change/fix.