When you learn new technology you spend time understanding its concepts and tools. But when technology meets real life strange and not pleasant things happen. Reuqirements are often far from ideal and differ from 'classic' scenario. And soon I find myself bending the technology to my real needs. At this point I begin to know bugs of the system or that is is not so flexible as it seemed at the very begining. And this 'fighting' with technology consumes a great part of the time while developing. What is more depressing is that the bunch of such gotchas and workarounds are not concentrated at one place (book, site, etc.) And before you really confront it you cannot really ask the correct question because you do not even suspect the reason for the problem to occur (unknown-unknown).
So my question consiststs of three:
1) Do you really manage (and how) to predict possible future problems?
2) How much time do you spend for finding the workaround/fix/solution before you leave it and switch to other problems.
3) What are the criteria for you to think about yourself as experienced in the tecnology. Do you take these gotchas into account?