This problem is a re-occuring one in my experiences. That of the ability to learn from other people's experiences, and being able to share what I have learned.
Part of the problem of this learning process, is the dependence on experience.
If for example, you've never had many jobs cleaning up other people's code for ease of readability, better written queries, and better logic, and validation practices, you might not have had developed the same practices and behaviors I have, in how I write my code.
This is what I call the "Experiental Gap".
It is very hard for people who haven't had the exact same experiences I have had to understand the reasoning why I have adopted the techniques and methods I have had.
Take as an example, source control, which is on the famous "Joel Test" as just one of the 12 items there.
Let's say you have worked with a wide variety of source control software/applications, not married to any of them, just want to use one that works. And have experienced a lot of the painful errors and problems that occur from not having source control.
Then how can you explain to someone who has never experienced those same problems, why source control is important and why they need to adapt it immediately.
This question is not about source control, that is just an example I am using to help illustrate the problem of communicating best practices or methods of any kind, when the reason we adopted them is mostly because of our personal work experiences.
Then when we meet someone that we see needs to adopt some of what we think is core, must have practices, and they have not had our experiences, it becomes nearly impossible to persuade or educate those people.
It's not because they are dumb or uneducated or stupid. It is because of the "Experiential Gap"
So now brings to the point of this question, because I want to be able to discuss and learn from other people how they have overcome this gap?
How do you teach or learn when you may not understand why you need to learn things or teach things.
Another example, I for years, have been anti-oo, anti-cfc's, (Used In ColdFusion). And then got into many flame wars because those people who have had the painful experiences could not persuade me of the importance of that.
And since i wasn't in a situation where I could experience what they had, this made for a very frustrating experience for both of us.
I didn't understand the need for the best practice.
And they couldn't understand why I didn't get it.
So how can we overcome this gap which is a key part of our learning process. Most of us, or a huge chunk of us, learn by self-teaching, reading, practicing.
This can be good and bad, but doesn't help us learn how to learn, or what to learn. Because then each of us have had different jobs with different skills and different experiences, then we each learn from those experiences, and can't really relate very well to people who haven't been what we've been through.
This is a very big but subtle problem, I think it needs to be addressed, if not by me, by someone more educated or experienced than I am.
I only want to help, us all learn more and learn from each other more easily..
Thanks...I hope this re-write is better.