6 min to read (1054 words)

"If-then" Planning for Coding

Tags: content-planning

Roadblock

I love Gretchin Rubin's books on happiness, and now habits. Her new book is called Better Than Before, which describes strategies for maintaining habits for four distinct personality types. I am an Obliger; Obligers are more likely to do things for other people, and require external accountability.

I consider this blog a form of external accountability, because it is public. Even my code is public on Github. The blog and public element of this project is good for my progress.

Today I am going to work on an "If-then" exercise described by Gretchin in her Strategy of Safeguards -- ways to protect a new habit. I used to think that life was supposed to be effortless -- because its best practitioners make it appear so. But my newer point of view is that mistakes and unintended situations appear, and we should be prepared to handle those.

What should I do if the following situations prevent me from coding or adding content to this site?

  1. I am tired. a) Try to code in the beginning of the day, if only for 5 minutes. I can start a draft title/outline in 5 minutes. I can structure the steps for coding my feature in 10 minutes. b) Power through and code for 5 minutes anyways. I've done other things when I'm tired (if I had to). If I am tired, I still go to work. Daily practice of my craft is not so different. DO NOT go to sleep and plan to code after waking up. That is procrastination and it usually does not work!
  2. I am on vacation and do not have my computer or an ideal programming environment. When I go out of town, I usually bring my work computer instead of my personal computer. To continue to program, I can write content in a notebook or my phone. I can practice coding techniques (like using new gems) on new Rails projects generate on my work computer. (I like to have a clean separation of work and personal, so I will not clone this repo on my work computer.) When I am doing something fun, the "I'm tired" excuse also happens a lot, so I will try to code daily before doing fun out-of-town stuff! I can also watch tutorials on Treehouse and write about them for content. That requires less mental energy than coding.
  3. I don't feel like it. This one is vague and a catch-all. The reason I require that I code every day is I don't have to ask myself, "Am I supposed to code today?" If my requirement is a small amount of investment (~20 minutes) every day, then I don't have to bargain with myself that I will code tomorrow (TWICE as much, even!) instead. So if "I don't feel like it" comes to mind, I will just remind myself that progress is the cumulative effects of my effort, not a one-time Herculean effort. How many times have I thought that my life would be better had I only started a year ago? My one-year older self will thank my present self I continue this daily coding habit!
  4. I do not feel inspired. To be honest, some of the code I have added to this site is pretty standard -- as of this writing, I do not even have comments on each individual post! Some days I feel more invincible than others, so if I have a less-inspired day, I can think of blog layouts that I like (ex: Medium, Instagram, Nutrition Facts (.org)) and see how I can add aspects of their UI and design to this blog. Or, I can add a case study to the site, wherein I think of how the database tables of a popular site is structured (ex: Airbnb, Pinterest, Yelp, Youtube).
  5. I do not feel smart. This is a big one. I do not have a degree from a Computer Science program, and it is intimidating to go through all the Computer Science literature out there, when I have 25% of the formal training of a CS major. However, I can think of others who have obviously learned outside of school (Bill Gates, Mark Zuckerberg), and even dropped out of formal programs to pursue their CS interests. I can tell myself that if I do not practice, I will be even worse off than learning a microscopic amount every day. I can watch a short video on Treehouse to jump-start the process. When I visit my parents, I will bring back some computer science textbooks I purchased online. If I read through actual textbooks, it will make my learning feel more legitimate.
  6. I would rather do a social activity with my friends. Have you ever heard: "On your deathbed, you'll never regret not working more. What you will regret is not spending time with the people you love." When I was in high school, I worked all the time. I worked more as a high schooler than I do as an adult. The reason I worked so hard was because I wanted to be the best student in the school, and go to a good school. It became part of my identity and my parents, friends, and teachers saw me as a serious student. That effort took a lot from me and I rebelled by spending more time with friends and on social activities. But now, as a more mature person, I know that I can achieve a balance of both. I have friends already -- the hard part of making them is over! I just have to reach out to them to maintain those friendships. I have more money now, so it's easier to maintain friendships by spending money to go to restaurants. I can make time for coding by expediting transportation to friend activities. Currently, I take the bus, or walk, to meet my friends. Perhaps I can call a car and get there faster, and it will allow me more time to code. Or I can say 'No' to some invitations because I know my friends will still be there if I have to spend time time to myself every now and then.

If I think of more excuses, I will post them here. For now, I will re-read this entry if I need to inspire myself!

posted 2015-05-10 13:15:50 -0700 by Belda


Recommended from Stack Overflow:

rake assets:precompile misses jquery-ui-rails files , tagged: ["ruby-on-rails", "asset-pipeline", "activeadmin"]

Rails - how to run a cmd line script and display the output in real time? , tagged: ["ruby-on-rails", "ruby"]

How to get localized values from Facebook Open Graph API through Koala? , tagged: ["facebook-graph-api", "translation", "koala-gem"]

Why does Active Record use module_eval internally for certain features? , tagged: ["ruby-on-rails", "ruby", "activerecord", "ruby-on-rails-4"]