Wednesday, June 4, 2014

Early Morning Awakenings

    What is it about your mind and body not being in synch in the wee hours of the morning?  "I am tired.  We should be sleeping.", my body mumbles to my mind at 3 AM.  My mind on the other hand has other plans.   Apparently those plans include waking up and focusing on some aspect of our latest project.  No matter how weary I am, for the next 1/2 hour I find myself staring at the ceiling or out the window trying not to think of my code.  I know where that road will end.  If I start, the mind will take that thought and run with it.  In this case, it ends with me working through various permutations of the game board.  Apparently, I am having second thoughts about using squares as the main component of the game board.  Despite the fact that squares have been used for a very long time in many popular board games and puzzles, I had to spend the next hour contemplating different ways of depicting those squares.  Heck, I even named the class as "FlowSquare".  The flows move in cardinal directions (N,S,E,W).  The board is one big square with smaller squares, like a chess board.  I just am not sure that an alternative like circles or triangles would be more visually appealing.  Yet, I find myself wide awake in the early morning trying to visualize how these alternatives would work.
    "Just go to sleep!", murmurs my body to my mind.  No chance.  Now as a programmer I am kind of used to these episodes.  Usually it involves working a lot of time on a particular programming problem and not quite working it out.  My mind it tricky and must need some time 'alone' during sleep to work out a solution.  No distractions and time to process all the things that I take in during the day or previous week.  Although it really messes with my internal clock, it usually leads to a solution to the problem.  I wouldn't say I rely on this mechanism, but I usually figure that the solution will present itself in time.
    A good part of programming is blind faith that a solution to the problem will be found and implemented in the the code.  We start with an idea and slowly turn that idea into a product or program over time.  Often building small modules along the way and fitting them all together to get the desired result.  Its kind of like writing a novel, I assume.   Flesh out the characters, find some interesting plot lines, and add environment to pull it all together.  For me, programming involves a lot of white board drawings, some notes on paper or in a journal, and then experimenting with code to see if the ideas work in an App.   In this scenario, my family and friends are the initial readers of the rough drafts.  The feedback on the work done so far can really help you to rework or refine the parts of the program that don't quite work.
    I am starting to feel that it was this feedback from Rebecca that trigger this particular early morning session.  We often try to schedule a lunch or meeting to go over some of the aspects of the latest project.  I have been throwing prototype versions of our latest game/puzzle at her to see what works and what doesn't.  I guess her sort of visceral reaction to the way the prototype flows work in the game stuck in my mind.  In her defense, this is not her kind of game or puzzle.  Not a strategy person, but that is ok.  Everyone has their favorite genres of games.  I am trying to build a easy to use and visually appealing game.  I also want the visuals and game flow to be dead simple to understand, so that it is easy to pick up and play.  I am now wondering if there is something I am missing to hit this goal.  I think I have to schedule some time with my buddies to get some more feedback.
    As for the waking up too early and not being able to sleep?  Well, I hear that this is something that I will be seeing more of in the future.  I am told that the older you get, the less you sleep through the night.  Makes you wonder why that happens.
   So I have that to look forward to.  Which is nice.

No comments:

Post a Comment