We’ve long been told that we need to be thinking outside the box to avoid getting caught in the traps and problems that typically appear when we plod along through things doing them the same old way and making the same mistakes that we always collectively make. I, your humble narrator, agree that this is indeed Sage And Great Advice.
I feel that sometimes we work so hard making sure that we are thinking outside of one box we end up putting ourselves in another box with its own confusing, harsh, and this time more surprising set of problems. After all, we were thinking outside of the box — why are we in another one?
In case you haven’t guessed where this is going, this entry is another in my line (does a pair make a line? Note to self: find out.) of posts supporting the idea that imposing a set of constraints on yourself — in this case working within the box — can often free your mind to worry about other and more important things. Ken Arnold agrees with me, and Joel Spolsky agrees with him! *Even though they both thought so before I wrote any of this!*
I got to thinking about all this because I was recently writing a little game for my new Android phone (here is a little applet version! Based on simple-tetris-clone) and realized that I enjoyed all of the constraints (framed as Best Practices) that the folks at Google recommended we work within and follow. While I obviously didn’t create a masterpiece of coding and design (at best, it’s a mediocre clone), I still really enjoyed my coding experience and the creativity I had to use to tackle some of the issues within the set of constraints of the system. I continue to think that by embracing the limitations of these boxes we find ourselves within, we can come up with clever and creative solutions to problems that arise within this system.
In this scenario, I perhaps didn’t have or want an opportunity to “think outside the box” and drift from the constraints of the system since part of my goal was to learn about the new platform and its best practices. However, had I decided to avoid the recommendations of the best practices and come up with my own scheme for something, I’m sure I would have run into some roadblocks that I avoided by focusing my energies on solving problems from inside the box.