Fifty Thousand Mistakes

Oct 02, 2012

By Jamison Dance

How do you get good at something? You do it badly for a long time.

Brazil

I spent two years in north-eastern Brazilian states of Sergipe and Alagoas. I knew zero Portuguese when I showed up with a group of Americans. A new culture and a new language was terrifying. After taking my ability to communicate for granted for 18 years, I had lost it until I learned the language.

Some of my friends reacted by pulling back. They didn't speak for fear of sounding stupid. And man, did we sound stupid. Brazilians love to laugh, and have no social qualms about laughing at a foreigner who makes bumbling mistakes. There is no malice in it, but it was shocking to someone raised with American sensibilities of politeness. This same love of laughter and lack of political correctness became one of my favorite parts of living in Brazil, but at first it was humiliating.

Luckily, I had a great mentor who gave me this advice.

"You will learn Portuguese by making 50,000 mistakes. You can make those mistakes now, and be fluent faster, or make them a year from now, but the more mistakes you make the faster you will learn the language."

His point was that the more you speak, the more you will learn. If you don't try for fear of failure, you will never find out what you are doing wrong, and will never get better.

50,000 Mistakes in Building Software

I have some perfectionist tendencies, but without the skills to actually make things perfect. I don't want to do something unless I am doing it optimally. I start ten blog posts a month, but am lucky if I get one published. I pick up new languages all the time, but rarely build useful things with them because I want to do it The Right Way the first time, without writing crappy unidiomatic code.

This is wrong. You cannot learn any skill without first trying, and sucking, at the thing you want to learn. You can't learn to develop software without writing terrible code. You can't learn TDD without writing crappy tests, you can't learn Go without writing horrible spaghetti Golang code, and you sure can't create anything of consequence without creating something awful first.

The Mistake Manifesto

I am putting my foot down. I will make more mistakes. Tons of mistakes. Cringe-worthy mistakes. Mistakes mean I am trying something new, and that means I am creating.

Jamison Dance enjoys kittens, making computers smarter and the magic of children's laughter. He tweets at @jergason and GitHubs as jergason. He also podcasts on JavaScript Jabber and Soft Skills Engineering.