Perseverance, or grit, is arguably just as important as intelligence, if not more. But don’t just take my word for it, read Eric Schmidt’s comments, made recently, on the value of education.
I recently wrote a blog post about the value of doing things, basically just rolling up your sleeves and getting great at what you want to be great at by just persevering. It is also, apparently, fact that people who persevere make more money than people who are just intelligent but give up quickly; the CEO of google was pointing to the fact that our universities need to do a better job of building up grit in their students.
I strongly belive that persevering and burning out are two totally different things. Recently there have been a few blog posts on hacker news that have gone viral, speaking about programmers going insane by burning themselves out. The body and the mind can only take so much.
As proof of this, there is a sport known as cross-fit. Cross-fit is basically all about doing exercise until you burn out, until your body cannot take anymore. There have been countless reports of people injuring themselves, tearing ligaments, breaking bones, and in some extreme cases dying. Extreme programming is no different than this; it is basically pushing your mind until breaks down.
Personally, I don’t believe that is healthy. When you work out until you burn out, your body no longer stimulates muscle growth. In fact, it begins to consume muscle mass, essentially eating itself. Try running for hours at a time, you will find your body will initially burn lots of fat but after a certain point, you will lose muscle mass at a much higher rate. The brain, I think, is no different.
Perseverance is about doing something continuously and not giving up, that doesn’t mean in one sitting. Grit is really about not giving up after failure. To properly leverage both and get great at something, you have to do that thing continuously, remembering that life is a marathon not a sprint. There is a threshold, your body and mind will get tired and it will give you signs, you should not cross that threshold as the value you are getting is significantly decreased. Your software will have bugs if you develop tired, side effects and unintended consequences will undoubtedly enter the process. Similarly with working out a 45 minute to 1 hour session in a day is all that is required. You do that for years and you see your health improve; Similarly you write code for an appropriate amount of time and you will see that skills improve as well.
Burning out will not bring the results you want faster, only continuously doing in a healthy way will bring real long lasting results.