79
QUALITY IS A VARIABLE James Higgs @higgis

[Keynote] James Higgs - Quality is a variable

Embed Size (px)

Citation preview

Page 1: [Keynote] James Higgs - Quality is a variable

QUALITY IS A VARIABLEJames Higgs @higgis

Page 2: [Keynote] James Higgs - Quality is a variable

“ We launch valuable products, services and companies that make a measurable difference to the world.

4Studios

200People

22Nationalities

Page 3: [Keynote] James Higgs - Quality is a variable

Whether our iconic game Monument Valley or innovative technical platform Wayfindr, for 10 years we’ve create products with passion from conception to launch and beyond.

AWARD-WINNING OWN PRODUCTS AND GAMES

APPLE DESIGN AWARD

WINNER 2015

BAFTA BEST BRITISH

WINNER 2015

APPLE GAME OF THE YEAR

WINNER 2015

Page 4: [Keynote] James Higgs - Quality is a variable

MONUMENT VALLEY10,000,000 DOWNLOADS

The ustwo games team conceived and built Monument Valley in 10 months with continuous user testing with gamers and non-gamers to achieve a magical and intuitive puzzle game experience with mass appeal.

MULTI-AWARD WINNING 2014

$8,000,000 REVENUE

Page 5: [Keynote] James Higgs - Quality is a variable

INNOVATIVE CLIENT WORKWe partner with smart clients to launch new products, services and companies that are of strategic importance and reliant on innovation.

Page 6: [Keynote] James Higgs - Quality is a variable

WE ARE PRODUCT ENGINEERS

Page 7: [Keynote] James Higgs - Quality is a variable

EVERYTHING I SAY TODAY WILL BE ABOUT DELIVERING END-USER SOFTWARE.

Page 8: [Keynote] James Higgs - Quality is a variable

PRODUCT ENGINEERS SERVE THE NEEDS OF USERS THROUGH THE PRODUCT

Page 9: [Keynote] James Higgs - Quality is a variable

YOU WILL NOTE THAT I DID NOT MENTION CODE IN THAT DEFINITION

Page 10: [Keynote] James Higgs - Quality is a variable

WE DO THINGS TO MAKE THE PRODUCT BETTER, NOT TO MAKE OUR LIVES AS ENGINEERS EASIER

Page 11: [Keynote] James Higgs - Quality is a variable

WE MAKE OUR ENGINEERING LIVES EASIER ONLY IN SO FAR AS THAT HELPS THE PRODUCT

Page 12: [Keynote] James Higgs - Quality is a variable

ONE OF THE BIGGEST ISSUES I SEE IN OUR INDUSTRY TODAY IS OVER-ENGINEERING

Page 13: [Keynote] James Higgs - Quality is a variable

OVER-ENGINEERING IS WHERE YOU PRIVILEGE GUESSES ABOUT THE FUTURE OVER FACTS ABOUT THE PRESENT

Page 14: [Keynote] James Higgs - Quality is a variable

OVER-ENGINEERING IS WHERE YOU MAKE THINGS THAT ARE SUFFICIENTLY EASY MORE COMPLICATED

Page 15: [Keynote] James Higgs - Quality is a variable

YOU WILL QUITE OFTEN HEAR ENGINEERS REFER TO THEMSELVES AS “CRAFTSMEN”

Page 16: [Keynote] James Higgs - Quality is a variable

WHEN A POTTER MAKES A POT, SHE TOUCHES IT WITH HER HANDS, AND YOU TOUCH THE SAME PHYSICAL THING THAT SHE DID

Page 17: [Keynote] James Higgs - Quality is a variable

USERS DON’T CARE HOW YOUR CODE IS STRUCTURED

Page 18: [Keynote] James Higgs - Quality is a variable

IN FACT THEY NEVER SEE OR TOUCH YOUR CODE

Page 19: [Keynote] James Higgs - Quality is a variable

THAT’S BECAUSE CODE IS A TRANSITIONAL ARTEFACT

Page 20: [Keynote] James Higgs - Quality is a variable
Page 21: [Keynote] James Higgs - Quality is a variable

MOZART, PERHAPS THE GREATEST COMPOSER IN HISTORY, WAS HIGHLY PRAGMATIC. HE WANTED HIS MUSIC PLAYED.

OUR CODE IS TO OUR PRODUCTS

Page 22: [Keynote] James Higgs - Quality is a variable

HIS MUSIC PLAYED.

OUR CODE IS TO OUR PRODUCTS WHAT MOZART’S MANUSCRIPTS ARE TO PERFORMANCES OF HIS MUSIC

Page 23: [Keynote] James Higgs - Quality is a variable

CARING ABOUT YOUR CODE AS AN END IN ITSELF IS LIKE MOZART WORRYING ABOUT HIS HANDWRITING

MUSIC

Page 24: [Keynote] James Higgs - Quality is a variable

I QUICKLY GOOGLED “WHY DO REFACTORING”

Page 25: [Keynote] James Higgs - Quality is a variable

DO IT “RIGHT”

I am a huge proponent of writing quality code, a view that is shared by many of my colleagues. Unfortunately, I do encounter those who do not share my enthusiasm. Their view is often one of “Get It Done,” whereas I take the position of “Get It Done Right.” - Chris Eargle

5. Your Code Sucks 4. Debts Accrue Interest 3. Repetition Is Dangerous 2. Spaghetti Is Good to Eat, Bad to Read 1. Littering Is Rude

None of these issues directly concern the user of the software

Page 26: [Keynote] James Higgs - Quality is a variable

IF YOU LEAVE HERE WITH ONLY ONE MESSAGE, IT SHOULD BE THIS...

Page 27: [Keynote] James Higgs - Quality is a variable

THERE IS NO “RIGHT WAY”

Page 28: [Keynote] James Higgs - Quality is a variable

IN FACT, THERE ARE ONLY TWO THINGS THAT SHOULD MATTER TO A PRODUCT ENGINEER

Page 29: [Keynote] James Higgs - Quality is a variable

CORRECTNESSREASONABLE

MEDIUM TERM PRODUCTIVITY

features, perf, security shipping features that users want and improving them thereafter

Page 30: [Keynote] James Higgs - Quality is a variable

TEXTMATE

Page 31: [Keynote] James Higgs - Quality is a variable

UNRELEASED CODE IS AN INVESTMENT THAT CANNOT PAY OFF

Page 32: [Keynote] James Higgs - Quality is a variable

THIS IS WHAT LEAN ADVOCATES CALL “INVENTORY”

Page 33: [Keynote] James Higgs - Quality is a variable

YOU GOAL SHOULD BE TO SHIP CODE AS SOON AS YOU POSSIBLY CAN

Page 34: [Keynote] James Higgs - Quality is a variable

AND THIS MEANS MAKING THE SIMPLEST THING THAT COULD POSSIBLY WORK

Page 35: [Keynote] James Higgs - Quality is a variable

AND SO I COME BACK TO THE PLAGUE OF OVER-ENGINEERING

Page 36: [Keynote] James Higgs - Quality is a variable

SOFTWARE ENGINEERS’ OWN ESTIMATION OF QUALITY IS MEANINGLESS

Page 37: [Keynote] James Higgs - Quality is a variable

THE QUALITY REQUIRED IS THAT WHICH ALLOWS YOU TO SHIP USEFUL FEATURES AT A CADENCE THAT WORKS FOR THE USER

Page 38: [Keynote] James Higgs - Quality is a variable

IF THE QUALITY IS TOO HIGH, THE CADENCE WILL BE TOO SLOW

Page 39: [Keynote] James Higgs - Quality is a variable

IF THE QUALITY IS TOO LOW, EVENTUALLY IT WILL BE IMPOSSIBLE TO ADD FEATURES AT ALL

Page 40: [Keynote] James Higgs - Quality is a variable

REFACTORING IS WHAT WE DO WHEN ADDING A FEATURE IS HARDER THAN IT NEEDS TO BE

Page 41: [Keynote] James Higgs - Quality is a variable

WE REFACTOR SOLELY BECAUSE THERE IS VALUE TO THE USER IN DOING SO

Page 42: [Keynote] James Higgs - Quality is a variable

THE CODE WILL BE CLEANER! NO THE CODE WILL BE EASIER TO TEST! NO THERE WILLL BE LESS REPETITION!NO

Page 43: [Keynote] James Higgs - Quality is a variable

WE HAVE COME UP WITH VERY ELABORATE SOLUTIONS TO THINGS THAT ARE ALREADY SUFFICIENTLY EASY (BUT REPETITIVE)

Page 44: [Keynote] James Higgs - Quality is a variable

COPY AND PASTE IS OFTEN THE BEST WAY TO REUSE CODE

Page 45: [Keynote] James Higgs - Quality is a variable

ALL SOFTWARE ENGINEERING TECHNIQUES ARE A MEANS TO AN END, NOT A MORAL IMPERATIVE

Page 46: [Keynote] James Higgs - Quality is a variable

SO, LET’S TALK ABOUT THE OBVIOUS OBJECTION TO THIS PHILOSOPHY

Page 47: [Keynote] James Higgs - Quality is a variable

TECHNICAL DEBT

Page 48: [Keynote] James Higgs - Quality is a variable

TECHNICAL DEBT IS WHERE YOU DO SOMETHING IN A WAY THAT YOU THINK WILL NEED IMPROVEMENT IN FUTURE, BUT WHICH WORKS NOW

Page 49: [Keynote] James Higgs - Quality is a variable

DEBT IS NOT BAD! IT’S A WAY OF GETTING AHEAD OF THE GAME IF USED RESPONSIBLY

Page 50: [Keynote] James Higgs - Quality is a variable

CORE TO THE AGILE PHILOSOPHY IS THE CONCEPT OF ITERATION. ITERATE: TO DO AGAIN

Page 51: [Keynote] James Higgs - Quality is a variable

TODAY’S ENGINEERS WILL GO TO EXTRAORDINARY LENGTHS TO AVOID DOING SOMETHING AGAIN

Page 52: [Keynote] James Higgs - Quality is a variable

IT IS A FUNDAMENTAL ERROR TO TRY TO SOLVE A PROBLEM DEFINITIVELY ON THE FIRST TRY

Page 53: [Keynote] James Higgs - Quality is a variable

BECAUSE WE DON’T EVEN KNOW IF A FEATURE IS WORTH HAVING UNTIL USERS HAVE USED IT

Page 54: [Keynote] James Higgs - Quality is a variable

IT MAKES NO SENSE TO SPEND A LOT OF MONEY GETTING SOMETHING EXACTLY RIGHT WITHOUT KNOWING IF IT’S NEEDED

Page 55: [Keynote] James Higgs - Quality is a variable

THIS IS WHY IN AGILE WE USE A LIMITED TIME HORIZON; BEYOND THAT WE ARE GUESSING

Page 56: [Keynote] James Higgs - Quality is a variable

ENGINEERS HAVE SCARED NON-ENGINEERS WITH “TECHNICAL DEBT” FOR TOO LONG

Page 57: [Keynote] James Higgs - Quality is a variable

HERE’S MY CHALLENGE TO YOU:

QUANTIFY IT.

Page 58: [Keynote] James Higgs - Quality is a variable

MANY ENGINEERS WILL ASSERT THAT A GIVEN APPROACH IS “BETTER” BUT FAIL TO EXPLAIN HOW IN TERMS THAT MATTER TO THE PRODUCT IN THE FORESEEABLE FUTURE

Page 59: [Keynote] James Higgs - Quality is a variable

MOST OF THE TIME WE’RE TOLD IT’S GOING TO HAVE DIRE CONSEQUENCES LATER IF WE DON’T DO IT “THE RIGHT WAY”

Page 60: [Keynote] James Higgs - Quality is a variable

ARE YOU CERTAIN THAT THE FUTURE CHANGE WILL NEED TO BE MADE? ARE YOU CERTAIN THAT SLOWING THINGS DOWN IS THE BEST OPTION NOW?

Page 61: [Keynote] James Higgs - Quality is a variable

BUT THIS PRESUPPOSES SOME PRECISE KNOWLEDGE ABOUT THE FUTURE THAT WE DON’T YET HAVE

Page 62: [Keynote] James Higgs - Quality is a variable

SO, NEVER MIND TECHNICAL DEBT LET’S TALK ABOUT TECHNICAL BETS

Page 63: [Keynote] James Higgs - Quality is a variable

ENGINEERS WHO WANT TO INVEST IN DOING THINGS THE “RIGHT WAY” SHOULD SHOW WHERE THE VALUE IS TO THE USER.

Page 64: [Keynote] James Higgs - Quality is a variable

WHEN YOU CHOOSE TO MAKE A TECHNICAL BET, GO BACK AND MEASURE WHETHER IT WAS WORTH IT

Page 65: [Keynote] James Higgs - Quality is a variable

DO NOT FALL PREY TO RETROSPECTIVE DETERMINISM

Page 66: [Keynote] James Higgs - Quality is a variable

YOU MAY LOOK BACK AND THINK YOU SHOULD HAVE MADE THE BET, BUT BY THAT LOGIC YOU SHOULD HAVE PLAYED LAST WEEK’S LOTTERY

Page 67: [Keynote] James Higgs - Quality is a variable

AND ALSO CONSIDER: EVEN IF I WOULD HAVE WON THE BET, WAS IT THE RIGHT TIME TO MAKE IT?

Page 68: [Keynote] James Higgs - Quality is a variable

TO BREAK EVEN ON A TECHNICAL BET, YOU MUST LATER SAVE DOUBLE THE TIME IT TAKES TO MAKE IT

Page 69: [Keynote] James Higgs - Quality is a variable

LEARN ABOUT OPPORTUNITY COST

The loss of other alternatives when one alternative is chosen“

Page 70: [Keynote] James Higgs - Quality is a variable

OFTEN THIS MEANS CHOOSING BETWEEN A USER FEATURE AND A TECHNICAL BET

Page 71: [Keynote] James Higgs - Quality is a variable

WE KNOW THE USERS WANT THIS FEATURE NOW. IS YOUR BET GOING TO PAY OFF BIG ENOUGH?

Page 72: [Keynote] James Higgs - Quality is a variable

START BY NOT BETTING ON MAKING SUFFICIENTLY EASY THINGS EASIER

Page 73: [Keynote] James Higgs - Quality is a variable

EVERYTHING EXTERNAL TO THE PRODUCT - LIKE DOCUMENTATION- SHOULD BE ELIMINATED UNTIL THERE IS EVIDENCE IT'S NEEDED

Page 74: [Keynote] James Higgs - Quality is a variable

“ The critical question for any practice is: does it help us get better (or more, or faster) feedback on whether the software is useful?

- Sarah Mei

Page 75: [Keynote] James Higgs - Quality is a variable

IT TAKES REAL DISCIPLINE AND THOUGHT TO MAKE THE RIGHT TRADEOFFS FOR A PRODUCT

Page 76: [Keynote] James Higgs - Quality is a variable

A PRODUCT IS LIKE A GREAT CITY: NEVER FINISHED, CONSTANTLY CHANGING, ALWAYS ADAPTING TO USE

Page 77: [Keynote] James Higgs - Quality is a variable

ASK YOURSELF AND YOUR TEAM: ARE WE OVER PRIORITISING THE FUTURE?

Page 78: [Keynote] James Higgs - Quality is a variable

KEEP THINGS SIMPLE, MOVE AS QUICKLY AS YOU CAN, DON’T BE AFRAID TO GO OVER THINGS AGAIN

Page 79: [Keynote] James Higgs - Quality is a variable

THANK YOU!