The Firehose Project — Week 9

edited — 8/2/16

I have not posted a blog entry in awhile so I thought I would get one out to get some random thoughts out of my head.

Week 9. Time sure flies when your learning to code. It is one of the most challenging things I have ever done and also one of the most enjoyable. Learning how to write code and develop apps is mostly about the little wins. Especially when you’re getting into something unfamiliar. Learning to code can be arduous and slow and so the little wins are the most frequent. Big wins like finishing an app happen on occasion and it is great when it happens but it is the little wins that are teaching you. Celebrate them.

A small win might be that my code manages to run past a troublesome method that has taken awhile to get right. Maybe it was a concept that I wasn’t getting that has become clearer. Often the thing I am trying to translate into code appears to be deceptively simple and yet I struggle for hours trying to make it work. Sometimes I am not thinking about the problem in a way that helps or I don’t know how to write the code. Usually it is both. Coding is like that and sometimes once you get something working you have to move on to the next piece of the puzzle knowing that you’ll see the concept you just made some headway on again and you’ll learn a bit more about it when you do. You may even have picked up some insight on the way by working on a something else. There have been plenty of times when I have come across some aspect of programming that I have struggled with and had a moment of insight because of what I had been doing since then.

Jake gets linked lists.

I’ve heard advice about learning to ask the right questions several times and recently someone in the Firehose Slack channel reminded me of it. I’ve thought in the past that knowing which questions to ask was counter-intuitive for the student trying to learn something new. How does you know what questions to ask if you don’t know anything? I would ask questions and the answers would confuse me. The ones I was asking were not the right ones. I see this in hindsight because now that I know a few things about writing code my questions are getting better results. Not all the time but more often. The irony is that it takes a certain amount of knowledge in a subject to be able to ask a coherent question that will lead to a helpful answer. We get there eventually it just takes time.

Recently another Firehose student, Stephen, wrote in a post about immersion and learning. It is worth a read for the insights he shares. One thing mentioned in the blog that resonated with me was to make coding a habit by consistently coding every day. I have thought about habits quite a bit while trying to make sure that I spend time each day on the things that are important to me. We are all busy and often it takes a lot of effort to take on a task when we’ve already had a full day. In the book “Mini Habits” by Stephen Guise, the author talks about the idea of willpower and how we try to use it to get ourselves exercising, reading more, to get somewhere on-time, …whatever. The thing is that willpower will only get us so far.

Willpower is a limited resource. Have you noticed it really doesn’t work for long-term goals? We’ve all had the experience of starting something new and being driven and excited for a while only to loose that enthusiasm a short time later and drop the activity completely. In my experience when this happens we feel badly about ourselves and feel lazy and flawed because we have no willpower. To say that someone is lacking willpower verges on insult and when we see people succeeding at something we’ve failed at we wonder what they have that we don’t. It‘s not fair! Then we will complain to our friends that we are bad and have no willpower, OMG!! what?, and that just makes us feel worse and we throw a pity party. It is ridiculous when you really think about how much we stress ourselves out over the idea of willpower. I find it very strange. Guise recommends instead of trying to use willpower to get things done make the activities habits.

This cat has a Coke habit.

Perhaps Guise is on to something and by focusing on willpower we are setting ourselves up for failure. There are exceptions of course but if we really look into why someone is excellent at something I believe that nine times out of ten we will find that that person has spent a lot of consistent, focused time and hard work developing that excellence. Years perhaps. As I looked into habits and how to create them I realized that we are not driven by willpower or desire but by habitual behavior. The willpower and desire light the flame but they are not always around when the going gets tough. What we do every day is who we become and a lot of things that we do are automatic or habitual behavior. Having this insight was freeing. I was not a flawed person with no willpower, too lazy to finish anything or not good enough to succeed. I didn’t have to feel bad about myself. I just had to switch out the habits that were not working for me with ones that would.

I started doing this with instrumental practice, I play bass guitar and double bass. Although I practiced I was not doing it consistently enough to reach the goals that I had in mind for myself. I needed a plan and after searching awhile I found these ideas about habits. It was tough going at first but I soon found that it got easier and at some point, I don’t know how long it took, I stopped having to think about doing it and just did it. The thing was that if I did not get some practice time in one day, the day felt somehow incomplete. That is when I knew that my practicing was habitual behavior. I have done the same thing with learning to code but this time without thinking about it. Even when the material is difficult and I have to apply some grit, something that is easier when you are not a slave to willpower, it is the habit that carries me through. I don’t procrastinate as much as I used to. Somehow my old way of thinking, that I lacked willpower and was lazy, or maybe I was just not good enough, fed the procrastination habit. Why bother right? Somehow the idea of being flawed, of not having what someone else has, gave a payback of some sort. Not a positive payback but to the ego a payback is a payback and a negative one can be carried around like a shield against success. Maybe the idea of willpower is less tangible and so there are no clear methods to strengthen it, get more, or sustain it. Habitual behavior however, solves that problem because making something a habit is doable. We are all experts when it comes to habits. And I find that when I remove willpower from my thinking, getting started seems less stressful. It is something that you do rather than something that you have to do or have to make yourself do. It also helps with fear of failure. Consistency bolsters confidence which feeds the cycle and also helps you to keep your eye on the prize and not get bogged down in trivial details that can cause problems. I am not thinking that I can’t do this because I am too busy doing it. It is not “I have not worked on that in awhile”, it is “here is what I will do tomorrow.”

This sloth has spent a lot of consistent time eating carrots.

If you want to learn to write code or do anything that takes time and effort and you tend to procrastinate or not feel capable or do anything else that holds you back, consider making it a habit. It is not easy and it is something you’ll have to continuously work on and reinforce, but it just might help.

You’ll read here and there that habits take so many days to form and other things that go along with that, but my suggestion is not to worry about things like that. You don’t really need to read a book on forming habits anyway unless you are just interested. Instead use willpower to get started and do whatever is necessary to engage in that activity every day that you can. If it is a struggle push yourself and do ten minutes of the activity. You may find yourself doing 20. The idea in Stephen Guise’s book “Mini Habits” is that doing small steps, even a few minutes a day if necessary, will lead to a few minutes more over time. His idea is that at some point the habit will kick in and you will be putting in the hours needed to reach your goals. Of course if your entering a coding bootcamp like the Firehose Project for instance, you won’t have the privilege of building the coding habit up. You’ll have to jump right in. But don’t worry. If it is something that you really want to do and you shift your thinking from willpower to habits I am confidant that you will develop the behavior and you will never look at learning a new skill the same way again.