Hey there Roman, I think that what you're looking for is that scenario where you as a software engineer or developer feel comfortable in the way you approach to problems, That scenario is full of many variables and those variables are different according to the people who is seeing the problem, but sometimes there are some basic useful advises:
1) Understand or domain the basic of what your doing (programming, solving a problems, developing an Algorithm etc)
2) Read and isolate those errors that might be causing you troubles in your labor in order to fix them.
3) Know when to stand up and give yourself a time for breath and relax.
pd: this is not a book, or youtube video or tutorial, but I hope it might be useful to you. Cheers and keep coding, that is what make us develop that "Thinking like an engineer or programmer".
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.