I want to address the statement that if you think like a developer you will fail. I think a better way to say that is "It is good to understand what SharePoint will do out of the box so that you do not write something that it already does." SharePoint is a platform, and as a developer you should take advantage of its inherent features as opposed to just writing everything from scratch in ASP.NET and using SharePoint as a host.
It boils down to two things:
1) Understand what the product does out of the box
2) Take advantage of the products features/services
This is true for any platform. In fact, there are many traditional windows and web developers who never took the time to know .NET and do not take advantage of all of the features in the .NET platform. As the platform evolves (based on community feedback and breakthroughs in technology), some people continue to write code the way they know how. This makes upgrades more difficult and often wastes much development time.
Take the SharePoint developer exams as part of your training. You will learn much by practicing for and taking the exams. There are threads on SharePointOverflow about how to best prepare for the exams. That is another good place to start.