The Ultimate Quality Challenge

The Ultimate Quality Challenge has become clear to me.
Here’s some of the things that I’ve found it is NOT about:

  • Programming
  • User Experience
  • Standards and Guidelines
  • Agile Workflows
  • User Acceptance Testing

Don’t get me wrong, all the above are critical to Quality Engineering.
However I am increasingly finding that the Ultimate Quality Challenge is one thing – hiring competent and passionate quality engineers.  This is a prerequisite to all of the above quality activities – without actual people, nothing is implemented (even automation!)

Hiring engineers in the quality space is very challenging for a number of reasons:

  • Historically QE was QA and meant manual testing, typically a lower job grade
  • Quality Engineering now means automation with different skill requirements
  • The majority of engineers like to work with application code, not tests only
  • Quality Engineers may suffer from several ‘second class citizen’ issues
  • Compensation may lead the best and brightest to switch to app dev roles
  • Peer respect may lead some to switch to app dev roles as they become skilled
  • Availability of QE Engineers for hiring is extremely limited (2017)
  • Current automation engineering differs from new javascript practices
  • Quality Engineering is often not championed as a cool and useful thing

I want to help change that!
Some of the things I am doing:

  • Active on asking and answering questions to promote good quality practices.  I am #1 world-wide in 2017 !
  • Active in Ministry of Testing slack community
  • Presenter on Quality at work, local meetups, national and international conferences

ES6: Destructuring, Object Literal Enhancement and the Spread operator


Scoping an object locally

From an object

    var {pref1, pref2} = user  // user is object w/ keys pref1, pref2

From a functions arguments

    var function_x = ({firstname}) => {
      full_name = `${firstname} of boston`

From an array

var [first_town] = ['Boston', 'Salem', 'Ham']  // 1st_town= Boston
var [,,last_town] = ['Boston', 'Salem', 'Ham']  // lst_town= Ham

Object Literal Enhancement

I’m guessing that name is going to change…
The opposite of destructuring.
Puts objects and methods together.

Objects from variables

var shell='bread'
var filling='butter'
var sandwich = {shell, filling}  
// New object 'sandwich' with contents
// {shell: 'bread', filling: 'butter'}

Object methods from variables

// Method is 'toast'
var toast = function() { console.log('Toast it for {time}') }
var toastedSandwich = {shell, filling, time}

Spread Operator “...

Array values

The actual values from an array (not the array itself)

var arr1 = ['Buick', 'Ford']
var arr2= ['Edsel', 'Dodge']
var arr3 = [...arr1, ...arr2]

Function argument values as an array

function direction(...args) {}

Object Values

The key-value attributes from an object, not the object itself, e.g.

obj1={a:1, b:2}
obj2={c:3, d:4}
obj3={...obj1, ...obj2}