Share via


Software testing in a flat world

I have been in Europe for the past 2 weeks presenting at conferences in Germany and visiting our offices in Vedbaek, Denmark and Dublin, Ireland.  When I travel to various locations I make a habit of finding children’s books about folktales and legends from that country for my young daughter because I want her to gain a broad perspective and appreciation of the world around us. I had the privilege of living (spending more than 2 years) in 4 different countries, and have travelled to many other countries around the globe. So, not only do I want to expose my daughter to diverse cultures, I also know that by the time she is an adult the world will be much smaller than it is today.

At the conference in Dusseldorf I got to spend some time talking with Theresa Lanowitz from Voke Consulting and also Dr. Victor Basili from the University of Maryland. Both had mentioned a book entitled The World is Flat by Thomas L. Friedman. So, when I saw this book in the bookstore in Copenhagen I figured this would be good for the trip back home again. I was wrong! I started reading the first chapter and could hardly put the book down. Talk about a captivating, enlightening, and thought provoking book.

In the first chapter Friedman captured my attention relating a conversation he had with Jaithirth “Jerry” Rao about accounting practices. Mr. Rao described how U.S. tax preparation (400,000 in 2005) was being outsourced to India, and the impact on accountants in the United States. Rao stated “What we have done is taken the grunt work. You know what is needed to prepare a tax return? Very little creative work. This is what will move overseas.” He also stated, “The accountant who wants to stay in business in America will be the one who focuses on designing creative, complex strategies like tax avoidance or tax sheltering…”
 
As with the accounting field, unless you have been in a cave for the past 5 years or so you should recognize a similarity between the above conversation and software testing and development. The off-shoring of software testing is real, but does that mean that I am afraid that someday my job may be outsourced as well? Perhaps it will be. But, by that time it may not be such a bad thing because I would have ‘retooled’ my skills and acquired the knowledge necessary to compete and continue to add value to my professional pursuits. Brad Silverberg once said, "The role of every Microsoft employee is to work themselves out of a job." What he meant was that we should find ways to eliminate fire drills and provide solutions so our jobs "just happen." Once we achieve that in our current role, we are then able to move on and strive to resolve larger problems. The world is in constant change, and with it I must constantly change. I know I can never rest on my laurels (whichever I think they may be) because the moment I do, the world will surely pass me by. This statement has even greater relevancy in the technology sector.

I constantly tell college students and new employees the execution of tests is ‘grunt’ work. Some of the real challenges in software testing (and encompassing the enitre development process) in the future are in:

  • Effective test design (from both black and white box perspectives)
  • Results and risk analysis
  • Defect prevention

A discussion of each of these topics could easily expand multiple posts, and I don’t want to diverge. But, these challenging areas of software testing require the ability to innovate, to design, and to critically analyze data and other information. Testers must be as technically acute as software developers, and perhaps even more creative. Testers need the ability to understand the system (hardware architecture, operating system internals, network protocols, etc.) as well as the detailed domain space (data decomposition, algorithm designs and patterns, programming language syntax and its limitations, etc). Testers must also be able to perform root cause analysis down to the code level in order to isolate patterns of defects and then be able to develop tools and influence processes to either detect defects before they get into the product through static analysis, or at least very early in the development cycle via dynamic analysis.  A good example of this at Microsoft is the static analysis tool FxCop to identify a majority of globalization type defects, followed by a tool that pseudo-localizes builds for dynamic analysis to ensure the software can be easily localized into any language version. (Within Microsoft a few teams have eliminated the need for on-site localizers creating ‘pilot’ languages (usually German and Japanese) at Redmond with zero bug bounce and resulting in more efficient localization processes and reduced costs.)

Testing is a creative process that requires a diverse set of skills and knowledge, but it is much more than simply finding bugs. Testers in a flat world will require an even broader set of skills, knowledge, creativity, and capacity to innovate than ever before.