To make good code and think sensibly, you have to practice and improve your skills always. To improve skills, you have to explore the world, meet with exists ideas and be ready to admit that your approach been wrong.
I never put doubt in my mind, cause i know when i touch the mic there's the rhyme
I like this song, but you will never be a good programmer if you will apply that mindset for development software.
The only way to be a good software engineer is be skeptic and always doubt about all.
It's not mean that you must be a man who can't make decision, but you should keep in mind that any your solution may be wrong. And you have to be ready to admit it and reject your solution which you applied last few years.
You should give up your pride and authority when you develop a software, especially when you work in team. Instead, you have to concentrate on results. If you sure that some your approach is work, but other guys from your team isn't, try to measure to find the truth.
Analyze how many bugs generate your approach, how many time your team spend when do that and how many otherwise, track performance, compare your methodology with alternatives.
This is true of others. Don't trust other people just because of authority or popularity, they may wrong too. And vice versa, listen the new ideas of not popular and not authority people to be inspires, think deep about it and discuss it. Split the statement out of the person.
Argue always versus your takes, even if you agree. Question your ideas and try to break them, to find better solutions.
The goal of skeptical thinking is find the most true way - the idea which very hard to refute, the solution which work most quite to ideal.
All this especially important when you lead a team, when you are team/business owner. You have to kill your authority and authority of all developers in your team for all technical discussions, listen all suggestions in details and never make decisions which you can't justify, without explaining, just because of you think it's right. If you don't, probably you are micro manager and you will suppress initiative of your developers and will make all decisions yourself and will force your team to agree with you, keep silence when they not agree and make bad product which not enriched by ideas of other people.