The learning curve of a programming language also consists of its errors (and exceptions), not only of its features. Often we are tempted to estimate a task assuming that everything will go well, but much time can be lost in debugging and finding out why an error happens or a language exception is raised.