In my house as a young child on any random weekend, there was an 75% chance that a puzzle was being assembled by my grandparents on the kitchen table. It was 75% because my grandparents usually trekked down from Baltimore to Rockville 3 out of 4 weekends. Puzzles were really important to my grandparents for a couple reasons. The obvious was it passed the time in a challenging way. Second, it was definitely my grandfather’s attempt at making each of his grand kids into better problem solvers. Third, my grandfather enjoyed a good challenge himself. The kinds of puzzles my grandparents brought over had hundreds and hundreds of pieces, sometimes over a thousand pieces. It wasn’t those big block pieces that could be assembled in about 10 minutes. It was those massive puzzles that took hours upon hours to assemble.
My grandparents had several strategies when working on a puzzle. First, they turned every single piece right side up so that each piece was visible. Second, they identified every piece that had a smooth edge which would be used for the border. Third they would look for color patterns in the pieces to identify groupings. I believe one of their last strategies was to assemble pieces that naturally connected into a small cluster of pieces.
They used to spend an entire weekend working through the puzzle. It wasn’t like that’s all they ever did. They basically would work the puzzle off and on throughout the day. They would focus on it after dinner. Usually I would help for an hour or two. They would work on it late into the evening. I think one time I woke up at 5am and walked down only to see my grandfather still in his clothes from the night before working on the same puzzle. He was focused to say the least and efficient. He could see the Matrix (…the best way to describe it). My grandfather saw patterns from those puzzle pieces that nobody else saw. What he could do over the course of a weekend was a project that it would take some folks weeks or months to accomplish.
I remember trying one of his puzzles when I was home from college break. My grandfather had passed away a few weeks earlier, and I remember a curiosity in understanding more about his passion for puzzles. I took out one of the puzzle boxes that he hadn’t tackled as of yet. It was still in the wrapper. He didn’t buy all of his puzzles. He did a lot of puzzle trades with other puzzle geeks. He had his fair share though. We might have donated an entire closet of puzzles when all was said and done. Well anyways, I started working on the puzzle one random Tuesday afternoon. By early evening I had turned over ever piece and had 1 side (the short side) of the border complete. I spent most of Wednesday finishing the border and grouping some pieces. By Thursday I was focused on a corner. I remember the puzzle was a Monet painting (so…not the easiest puzzle to assemble). I ended up being too busy on Friday (or at least that’s what I think). Saturday and Sunday came by and maybe I was 40% complete. I finally finished the puzzle two weeks later after working on and off.
I wasn’t as strategic as my grandfather. While I worked the border (outside to inside), I definitely attempted to work left to right, rather than outward to inward. I also found myself grouping pieces together way too early. After wasting a ton of time dabbling in each of the strategies my grandfather gave me above, eventually I ended up following them more religiously. I probably could have finished in 3 days if I had followed the strategies from the start.
Why is the Fitness Conversion Like a Puzzle?
I have a perspective on Fusion Conversion. In fact, I’ve written two blogs (one and two) on Fitness Conversion. There really is no strategy that the conversion team is leveraging to be successful. The weekly goals aren’t challenged, meaning nobody is challenging the throughput of 2 test definitions per day per resource. I personally think that last point is what is flawed. There’s no reason to accept the status quo of ~2/day when you dig into the details.
I happened to spend a fair amount of time talking with Learn Engineers working on Fitness Conversion. Here’s what I learned. First, in an 8 hour day of development, most of the time in the ballpark of 3 to 4 hours was spent running/debugging tests with a lot of waiting and digging around. The second bulk piece of time was searching via Eclipse for functions/scenarios that already existed. The third chunk of time was simply context switching between Fitness, SilkCentral and Eclipse. Basically, there was no strategy. The team was working the test case in a sequential fashion in which they started with Test Definition 1 and in sequence all of the TD1’s steps.
I find that flawed. There should be a strategy. Here’s my 2 cents on that:
- First thing first…look at the entire test case.
- Before doing any more work, look to see if anyone else has automated a similar test case (from the same sub-system)
- Outline the entire test case so that each step can be evaluated
- Identify Test Case Dependencies (essentially which Test Definitions are dependent on other Test Definition)
- Look for reusability
- Identify global scenarios and functions that can be used
- Identify within the entire Test Case for local scenarios
- Identify new functions that are not candidates for reusability
- Stub the entire test case out one step at a time in the order of
- Pre-existing global scenarios (do these before writing any new scenarios or unique fitness steps) throughout the entire test case
- Pre-existing global functions throughout the entire test case
- Local Scenarios throughout the entire test case
- New unique steps not candidates for reusability
- Code without running and debugging until the entire Test Case is complete
- Run/Debug test definitions based on dependencies
I’ve had a few engineers (Nakisa, Michelle and Graham) approach their conversion this way. The numbers are substantially better. Rather than 2 per day, we are seeing 4, 7 and sometimes 10 a day. This approach tackles the problems of context switching and the worst issue of lost opportunity. Because most of the conversion was done sequentially, if a developer is stuck debugging an issue, then there’s a lost opportunity to have code complete because they haven’t finished the coding.
Why the Current Approach is like a House of Cards
The more I think about the Conversion project, the more I tend to associate it with a house of cards. Think about…with a house of cards you are carefully assembling wall by wall with delicate care. After the walls are complete on one level, you then start assembling the floor of the next level holding your breath that the previous work isn’t for none. One bad move and bang…the entire house of cards falls to the ground. With a house of cards, there’s no way to work parts at a time and drop them in like a puzzle. If something crashes, essentially the whole thing crashes.