Saturday, January 14, 2012

Statement of Purpose

Scientific theories come from intuition honed by experience. I created many large, complex software systems for Fortune 100 companies and depended upon my intuition in addition to state-of-the-art methods and tools when building these systems. I hoped a master’s degree in software engineering would validate these intuitions. That degree now looks like the start and not the end of this hope. I wish to continue research into the methods and tools that improve the quality of software and the efficiency of its development.

My master’s project started as a design for the automated assessment of website usability. That changed once I found a European research group that had already created one. In trying to extend their work the project changed and it ultimately became a study in how one approaches the reverse engineering of a moderately large system (130KLOC) rather than on the results that can be gathered by using that system. Though small, my project demonstrated to me that I could successfully adapt from the commercial world of development to academic research.

Many things have prepared me for this new challenge: my undergraduate degree from a well respected engineering school in computer science, my recent master’s degree in software engineering, the education I pursued outside of any program, and my career. Of that preparation what I most prize is the discipline of detailed thinking and self-education I learned in my career. Extensive testing always indicated that I have the aptitude for this kind of rigorous abstract reasoning but it was the encouragement I received from my teachers made me realize I was prepared to tackle a thesis.

At UC Davis, I discovered the empirical software engineering group. I find overlap between the orientation of the group and my own instinct for investigation. My early training as a scientist left me aware of the paucity of hard evidence to prove the benefit of one software engineering technique over another. Most new techniques are fads with anecdotal support at best. I share their belief that software engineering will be improved through the rigorous application of empirical investigation over this kind of anecdotal or qualitative evidence.  I also firmly believe that the application of methodologies from the social sciences rather than the hard sciences is more appropriate for software engineering.

Given the opportunity, I would choose to research either requirements engineering or code comprehension. We know that the cost of correction grows exponentially the later in the process it is made. Because of that, errors in requirements engineering are the most expensive and yet still quite common. Based on what I have read so far there is still much to be learned.

I also believe that peer review of code is an underused and powerful way of improving quality. Code written solely for the benefit of mechanical functionality without regard to human comprehension is rarely acceptable. Evidence suggests that human review of code is more effective for verification and validation than testing. Beyond the question of why this technique is not used is the question of what makes code comprehensible to non-authors.

After a great deal of reflection on my future path, I feel I am ready, willing, and able to tackle this new challenge. It will be the challenge of taking some intuitive, novel idea and developing it into an proven statement about software engineering and a lasting addition to the field. Regardless what research or teaching opportunities are enabled by this degree, this is something I feel I am meant to do.

No comments:

Post a Comment