I remember very well the occasion when I first came to Madrid to work for a man of great insight. We were completing a design project which was to be implemented by a less-than-stellar technical team, and I came back with a design which I thought satisfactory. My boss looked at it and said “this is correct, but our technical muscle is not strong enough to execute it, come back with something easier”.
These words come to me time and time again with this project: I feel the constraint of my development skills go back and forth with my desires as a designer. The concessions are generally easy to reach, but the changes also mean that the design is never final. My intention is to approach a functionally complete prototype for next week, but when I try to advance I notice unaddressed dependencies.
So a stage is completed and I have that part ready. But I want to assign a score to the stage. The score will depend on the actions that are performed on the stage, so the stage actions need to be complete before I decide how to compute the score. But the stage actions also depend on my capacity to implement what I have in mind, so the chain of dependencies makes itself evident, and I can’t advance without having certain mechanics into place.
I was, however, an interesting challenge that has kept me engaged. Even if I don’t hit my goal for having it feature complete for early next week, the philosophy is correct: mind the structure before the surface.
There’s another game in the back of my mind taking form, after I’m finished with this game I want to implement it with a two week deadline. The purpose is to put into practice the insights gained in this project to help them settle, and my main concern in this is efficiency. I’m letting it grow on it’s own as a purely mental construct, and when it comes time to work I sense that it will have become quite clear.
I will append an insight which came today from my working activities: I spent a considerable amount of time chasing a bug, and though it was critical, I could have placed on the “do later” pile, according to current strategy, but some bugs are like mice: then peek out a corner, you chase it, and then you know it’s hiding behind the fridge. You have more important things to do than to kill the mouse at this moment, but if you don’t, then who know when you will have it cornered again!
So I “moved the fridge” but alas, it was not behind it. But looking closely, there was nowhere else to escape, it had to be inside the fridge, but this would require me to dismantle it. Virtual mice don’t escape fridges, so it would remain there if I chose to do it later. Still, the thrill of the hunt was too great, so I begun dismantling hoping I’d find it in the surface, going deeper and deeper, I could hear it’s presence, but I couldn’t get ahold of it.
Finally I caved in and spread everything open. It turned out to be a problem with high resolution displays: I had gone low level in a particularly expensive function, the coordinates that were being provided by the library were in client pixels but they needed to be in screen pixels, so I had to multiply the values by the screen pixel ratio and it was solved.
I’m undecided as if this was the right way to proceed, but I note it down for next time: any bug that escapes my immediate stomp will live another day, and I will observe the outcome of this.