On Implementing & Testing

I believe that implementation is an extension of oneself and testing is an inquiry of oneself. When seeking to understand a problem, I draw on personal experiences and perspective that shape my reasoning and mental models; the way I solve a problem is an extension of how I reason which is an extension of who I am and the experiences I’ve had. For instance, once upon a time, when I visualized the concept of recursion, I used to see a snake eating its own tail, or a sock being stuffed into its own opening. Coincidentally, I had difficulty solving problems in a recursive way, the base case always eluded me because the mental model I was using literally tied my brain into knots.

Likewise, when I test a solution I’ve implemented, I have to critically examine if all of the assumptions on which my solution is based are correct; the way I test a problem is a curiosity into my own reasoning. For instance, I had to re-examine if the mental models on which my understanding of recursion were sound. As it turns out, when I better understood stack frames as isolated instances of a function call, the mental model of recursive thinking became clear and linear, which allowed me to be able to grasp and implement recursive solutions correctly. In this way, my ability to inquire about my own understanding reformed and straightend out a mental model that I used to implement something.

In my experience, when I’m implementing, I’m affirming what I believe to be true. When I’m testing, I’m curious as to why what I believe may not be true. Throughout my career both implementing and testing code, this realization has helped me participate in producing, reviewing, and testing code in a healthy, non-depricating way that builds two complementary skillsets rather than fueling warring ideologies.

Warmly,

~ Aaron Vienneau