Category Archives: Uncategorized

The mentee becomes the mentor becomes the mentee

Mentoring appears to have been a reoccurring theme in my professional life lately, and I wanted to share my story, and the reasons I have come to feel so passionately about mentoring and teaching. I have been both a mentee and a mentor, and these days I am both. I would say that I learn as much in either role, and that is what is so amazing about mentoring relationships.

My first experience teaching was in junior high school when I started providing math tutoring to struggling students. I continued tutoring throughout high school, and discovered that I really enjoy it. Once I stared my undergraduate studies at Stockholm University, joining the physics department’s mentoring program for underprivileged junior high school students felt very natural. The students came to the university once a month to get help with homework, and get to know different role models.

While I was doing my graduate studies, I worked part time as a teacher at the House of Science. The House of Science works with high schools in the greater Stockholm area, and designs physics experiments that high schools typically do not have the equipment or teacher skills to execute. I would conduct experiments with school classes that allowed them to determine the speed of light, or measure particle tracks in a cloud chamber.

The extracurricular teaching I was doing inspired me to get even more engaged in outreach activities. I would frequently represent my department at science and career fairs, and visit schools all over Sweden to talk about science and the research I was doing. Through the department’s collaboration with the Swedish Research Council I got hired as a part time public liaison for the Swedish Polar Secretariat and the Swedish Research council. During one of my trips to South Pole, Antarctica, I corresponded with fifteen elementary school classes in Sweden. They would mail my colleague and me weekly questions, and we published all responses on a web page.

Since mentoring was such an important part of my life and work in Sweden, I started looking into local mentoring programs as soon as I arrived in Vancouver in 2011. With one foot in science and the other foot in industry, mentoring programs that connect university students with industry mentors are of special interest to me, and the reason why I joined the UBC Computer Science Tri-Mentoring Program. The program matches industry or faculty mentors with senior undergraduate students, who are in turn matched with junior undergraduate students. I am currently mentoring my third (female) student. I am also a member of the Society for Canadian Women in Science and Technology (SCWIST) and its recently launched Make Possible mentoring program, and I have joined Fiona Charles’s and Anne-Marie Charrett’s beautiful Speak Easy initiative as a mentor.

Having studied and worked in primarily male-dominated environments my whole life, I am aware of the importance of female role models, and how hard they can be to find. I want to be a positive role model in general, but in particular for women. I am always looking for new avenues for reaching out to girls and women to talk about why I choose a career in science and technology, and how I ended up where I am today. I would like to spend more time working with elementary school children, and as a part of that process I have volunteered for the App Camp For Girls that will be held in Vancouver in July 2015.

One of the most rewarding moments to me is watching someone I mentored accomplish something they didn’t think they could do, or never would have even tried. Continuous learning and growth are my driving forces, and I want to use what I learn and experience to help others. I have been fortunate enough to have supporters and sponsors that have given me the opportunities that have taken me to where I am today, and I want to pass that on to my own mentees.

Advertisements

The Science of Testing

Previously posted on the PQA blog.

The best way to approach a problem is typically to look at it from different angles, to turn it over and to discuss it until a solution can be found.  Similarly, it is important to try to bring different perspectives into your work to develop your skills and extend your toolbox.  This article explores the parallels between software testing and science, and highlights what testers can learn from the scientific method.

What is the Scientific Method?

The ultimate goal of all sciences is knowledge, and to acquire new knowledge, scientists make observations and analyze data – activities we normally refer to as research.  The scientific method is simply a collection of techniques that scientists use to investigate phenomena and gain new information.  For a method to be considered scientific, it must be based on gathering empirical evidence.  Empirical means acquired through observation or experimentation – making claims without experimental evidence is science fiction, not science.

Here, we can already draw our first parallel to testing.  We test software to try to learn how it works; like a researcher, our goal is to gain new knowledge.  If we already knew everything about the software, there would be no reason to test it!  When we test software, we are in fact experimenting and observing the results.  Testing is simply gathering empirical evidence.  Hence, we can draw the logical conclusion that good testing adheres to the scientific method!

Simplified, the scientific method involves the following workflow:

  1. Collect data through observation
  2. Propose a hypothesis and make predictions based on that hypothesis
  3. Run experiments to corroborate the hypothesis

If the experiments corroborate the hypothesis, additional predictions can then be made and tested.  If the experiments instead refute the hypothesis, it is necessary to go back and propose a new hypothesis, given the additional knowledge gained from the experiment.

A trivial example would be:

  1. We observe a mouse eating cheddar cheese.
  2. Based on this observation, we propose the hypothesis that our mouse will eat all sorts of cheese and, in particular, we predict that our mouse will also eat Swiss cheese.
  3. We give our mouse Swiss cheese and eagerly wait to see if the cheese will be eaten.

If the mouse eats the Swiss cheese, our hypothesis has been corroborated and we can predict other consequences, for example, that the mouse will also eat goat cheese.  If the mouse does not eat the Swiss cheese, we have to go back and suggest a new hypothesis.  Maybe the mouse only likes cheese without holes in it?

The scientific method is cyclic and dynamic; it involves continuous revision and improvement.  Based on observations, a hypothesis is proposed and the consequences of that hypothesis are predicted.  Experiments are setup and run to test the hypothesis, and the results are evaluated and used to propose a revised – and improved – hypothesis.

The scientific method.

The scientific method. Based on observations, a hypothesis is proposed and a prediction is made. Experiments are setup and run to test the hypothesis, and the results are evaluated and used to propose a revised hypothesis and so on.

How does the scientific method apply to software testing?  Let’s assume we are testing a simple text editor.  The workflow of the scientific method maps to software testing as follows:

  1. Learn the product and observe how it behaves
  2. Identify risks and predict potential failures
  3. Execute tests to reveal failures

Based on the results of our tests, we will identify other risks and use this new knowledge to design additional tests.  The process of testing a software product has striking similarities with the workflow typically adopted by scientists. But does software testing enjoy the same level of credibility as science?

Credibility

The word science comes from the Latin scientia, meaning knowledge, and when we talk about science, we refer to a systematic search for, and organization of, knowledge.  Typically, the word science is associated with authority, expertise and – last but certainly not least – credibility.

Whether we find something credible or not depends on:

  1. What we know about the issue – evidence
  2. How compatible something is to our own worldview
  3. Reliability of the source
  4. What are the consequences of accepting or refuting the issue

We are often more likely to believe statements if we have little knowledge of the topic – we simply do not have any counter evidence.  Some sources are also seen as more credible than others; if we read something in the morning paper, we are more likely to believe it than if it is posted on Facebook.

In testing, what we know about the issue equates to our test result.  How compatible the behaviour of a piece of software is with our prior experiences has an impact on our expected test result, and therefore might make us biased.  The reliability of the test result depends on who tested the product and how it was tested.  Finally, there may be direct consequences of reporting or rejecting any particular bug, which could affect our objectivity.

Is the testing done at your workplace seen as credible, and who assesses that credibility?  The first step in increasing test credibility is to look at the factors that will raise the likelihood that we will believe in both the process employed and the actual result obtained.

The Science of Testing

What characterises science is that it aims at falsifiable claims, whereas pseudo-science, or non-science, typically makes claims that cannot be verified.  Here, we can draw a second parallel between science and testing.  Software testing that embraces the scientific method tries to find ways in which the software fails rather than trying to prove that the software works.  How do we recognise the testing equivalent of pseudo-science? How can we protect ourselves, as testers, from being fooled by false claims? The best way is to nurture our inner scientist, and strive for an unbiased and reflective approach to testing.

2012 in review

The WordPress.com stats helper monkeys prepared a 2012 annual report for this blog.

Here’s an excerpt:

The new Boeing 787 Dreamliner can carry about 250 passengers. This blog was viewed about 1,200 times in 2012. If it were a Dreamliner, it would take about 5 trips to carry that many people.

Click here to see the complete report.