What do all of these things have in common? Well, first, they are part of the reason for an unintended but perhaps much needed break from blogging. I say that because, honestly, I realized I've posted over 100 blog posts in ten weeks. That in and of itself is not a huge deal, and it's been helped a lot by the fact that I have been posting daily synopsis of two books for much of those ten weeks, but it left me a bit stretched and somewhat fatigued, and in need of a recharge. The truth of the matter is, it was all an unintended but somewhat convenient way for me to avoid and delay my doing a project for "Learn Ruby the Hard Way". Yep, I fell prey to the very advice that Zed warned about. Which advice is that?
One final word of advice: Every programmer becomes paralyzed by irrational fear starting a new large project. They then use procrastination to avoid confronting this fear and end up not getting their program working or even started. I do this. Everyone does this. The best way to avoid this is to make a list of things you should do, and then do them one at a time.
Looking back, this is exactly where all of these things became convenient excuses for me to not start a big project. There would always be tomorrow. I'd be inspired after I got through this recent challenge that I had to take care of. I'll hit it as son as I feel better. No, as soon as these holiday parties are over. Ten days pass, and nothing. Well, I shouldn't say nothing, really. I have ideas, many unfocused. I have a vague framework in my head, but no firm commitment and, worse, no tangible code towards this challenge. I've been coding for work, and I have some better appreciation how to do things in the Cucumber and Capybara world now, but I'm still in the same old place I always find myself in. I'm good at modifying other people's code, but I'm awful at starting my own.
Also, I'm guilty of breaking my own covenant with myself. I said I would post the good and the bad of this process, and here's where the truth of the silence comes out. It's easy to post if the project is easy, or if the challenge is something I can overcome in a few hours or turns out to be trivial. It's another thing to post and say "well, I have another excuse as to why I didn't do what I said I'd do, and here it is." I didn't want to have to write that, so I kept saying I'd make my "mea culpa" when I completed the project and post it. Even under this "personal delusion", I didn't think I'd be seeing a ten day break between posts.
So I've decided it's time to go back to my original plan. This blog is my accountability partner, and more to the point, to all who read this blog, you are all my accountability partners, too. Therefore, I hereby bring myself back to the original plan, and I'm not going to wait until "tomorrow" to post what I should be doing, I'll continue it here, and here starts today.
My first "problem" was that I got hung up on how I would map out the program I intended to write. I hate doing flow charts and all of that, so I was delaying getting started on the flow chart. Then I was wondering what I would use for the flow chart. Then I fell into an utter lack of imagination as to how I was going to actually pursue my original plan of walking through a haunted house. From there, it was always a "wow, that's going to take a long time, I better hit this tomorrow"... and tomorrow never came.
I've made points in this blog many times that I do this blog and I talk about these things not because I am good at this stuff, but because I'm exceptionally bad at doing this stuff at times. Still, I maintain that the same tools work in these cases. Having a public face, being publicly accountable, and being willing to say "OK, I messed up on this, but I'm going to get back into the swing here and now and keep going" helps do exactly that.
A Tour Through a Haunted House
My mistake was that I got hung up on trying to make a high level plan from the outset, and that high level plan terrified me. I tried to code a story I couldn't picture in my head, and I tried to flow chart before I ever had a story to work with. So this time, I'm going to start much smaller. I'll start with some simple stories.
There is a large mansion that has been derelict for close to a hundred years. It stands in an over grown forest with little but a dirt road leading to it. the house itself looks like it may fall in on itself at any moment. Stranger still, many people say that the house is haunted. So why would I want to go in it? Because some locals have said that the house contains an ancient artifact made out of gold. That's the rumor, anyway, no one who has gone after it has been able to get past the fact that every time they try to approach the house, something breaks inside of the house to prevent them from looking very closely. Stairways collapse under the weight. Boards on the floor break. Doors are rusted shut, and occasional flooding has filled the basement with water. Falling into that basement is no fun, as there's little in the way to get out of it. So if I'm going to explore the house, I need to make sure I have a game plan.
I've heard some people say that the road itself is dangerous, that there's a large sinkhole that I can fall into if I don't turn at the right place (there's a tree that's grown up in the middle of the old road. If I go to the left down the obvious curve, I'll hit the sinkhole, but if I drive over the root bump on the right, I'll be OK.
That gives me a legitimate starting point. Now I need to map these elements as I've decided. Right now, rather than worry about the entire story, I have a simple first block to work with, the road up to the house:
Diving up to the house (1st step)
Choice: drive around the tree that is in the middle of the road.
If (left turn)
Land in sink hole. Crash results in killing the driver (me). End of the line.
Else (right turn)
Continue on up the road to the house.
So that's not a lot to work with just yet, but it's enough to get me started :). From here, I can start exploring other avenues for this project, and now, I can at least say I've started rolling the rock again. From here, there will be a post each day, regardless of if I make any progress or not (see, I didn't actually say I'd do that last time, so now I'm taking away my "out" (LOL!) ). I think that now that I have a loose framework started, I'll be able to make more headway as I go forward.