Becoming a good analyzer and designer can greatly benefit a developer. But there are definitely obstacles for this. Not everybody is interested in OOAD, and not every person who is interested, knows the path. Should a good OOAD know multiple OO languages? Or should he/she have failed projects? How can one become a good OOAD?
How to become good at object-oriented analysis and design (OOAD)?
design;object oriented design
People who aren't interested are creating their own obstacles. I can't worry about that.For those who don't know the path, I suggest:I find that every OO language I learn makes me a better OO developer. Much can be brought from each language into others, as long as you find the community.You do learn more from failure than from success, but try to do that on your own time. Professionally, trust in those with more experience, at least some of the time -- but don't be afraid to ask Why?.Learn all five of the SOLID principles and understand why they exist. None of them are rules, but they are good guidelines when you're lost.Test Driven Development made more of an improvement to my OO design skills than anything else I've ever learned.You will not be your best until you've gone from underengineering to overengineering and then found the correct balance (closer to the latter).Actually, scratch that, you'll never be as good as you will be two years later.Read a lot of books and blogs but take nothing as gospel. This industry still hasn't found, and may never find, a perfect path.By all means learn design patterns, but don't look for places to use them, simply use them as a facilitator to communication.Hope some of that helps.