Reading about several things they don’t teach you in school, one that sounded me very important is how to deal with failure:

In school, kid’s learn that “failure” is a negative term. However, it is nothing of the sort. There has never been a single successful person who hasn’t failed numerous times on their journey to success.

In fact, the most successful people in life are those who have failed the most.

Edison ‘failed’ more than ten thousand times before he succeeded in creating the light bulb. As said by Thomas Edison: “I have not failed 10,000 times. I have successfully found 10,000 ways that will not work.”

In software development, failure is mostly seem as a negative term too. Obviously we don’t want to deliver software with bugs to the end users, but I believe that most of the bugs could be avoided if the developers change their view about failure.

When you start doing Test-Driven Development, one of the first lessons you learn is how failures are useful during the development process. Every test that fails is an allied to understand a little more about the problem you’re trying to solve. Why don’t they tell this in Software Engineering class? I really don’t know.