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).

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.
If this question can be reworded to fit the rules in the help center, please edit the question.

Would depend on who uses the word. If some guy tries to sell you something and explains what a nice flat easy going learning curve it has, you can be sure he doesn't include too many edge cases. (Whereby selling not necessarily means for money. Some huge long time fans of certain technologies become blind for it's problems too.)
–
thorsten müllerNov 8 '12 at 16:37

2 Answers
2

Look at the level of maturity of a technology in question, and consider how widespread is its use. You can predict with reasonable certainty that the number of non-intuitive places in a technology stack drops as the technology gets more mature.

2) How much time do you spend for finding the workaround/fix/solution before you leave it and switch to other problems.

It depends on the need for a fix: I've spent nearly two weeks researching a rare but persistent bug on an obscure platform that we needed to support, because the platform was required by the contract. This was when Experts Exchange was in its infancy, and Stack Overflow did not exist.

3) What are the criteria for you to think about yourself as experienced in the tecnology. Do you take these gotchas into account?

Absolutely, I do! In fact, it's pretty much the only thing that makes up the "experience" (as opposed to "knowledge" that can be learned from books and tutorials).

The biggest criteria is how long you can go without hitting one of these "gotchas": what's gotcha for one developer, may be a known limitation to another developer, and a feature to yet another one. The more you use a technology, the more "gotchas" sort themselves out into your "feature" and "limitation" boxes, letting you work without discovering a new one for days and months.

The reason it's called a learning curve (as opposed to a learning slope) is that it starts out steeper and levels out but never truly becomes flat. There's always something you don't know. And there's always something that you don't know you don't know.

You learn from experience, and it's an unfortunate truism that you learn more from your mistakes than your successes.

To answer your specific questions:

Do you really manage (and how) to predict possible future problems?

To some extent. A lot of it comes from my own experiences and those of people I've worked with. But it's not entirely "I can't predict something unless I've seen the problem before." You start to get a spidey-sense for the areas where gotchas reside. I understand why you currently feel that there's no pattern to them, but over time you'll find that there is, in a lot of cases.

There are certain things that scream out "Here be dragons" without you really knowing what colour the dragons might be. But, in those cases, you can usually get that information from Google.

How much time do you spend for finding the workaround/fix/solution before you leave it and switch to other problems.

Depends again on that instinctive sense. I've run into a problem just this week that I never saw coming and never would have spent time looking for. I made a very obvious assumption that I think most people would make, and I'd make it again.

But there are certain areas (for example, anything to do with communications) that I don't go near without Googling for gotchas.

What are the criteria for you to think about yourself as experienced in the tecnology. Do you take these gotchas into account?

I think experience is relative. There is no "I am experienced in this technology," no matter how much we try to claim there is on a resume. I think it's all about whether you're more experienced in the areas of risk that you're facing than other people you're working with.

ie. How often do you spot those gotchas, before they become problems, compared to your colleagues?