Software Developers Guide to Fun in the Workplace: Euphoria Despite the Despair

Post on 14-Jan-2017

1.196 views 0 download

Transcript of Software Developers Guide to Fun in the Workplace: Euphoria Despite the Despair

IBM _ 1

A Software Developer’s Guide to FUN in the workplace

How to achieve Euphoria despite the Despair

Holly Cummins, IBM | @holly_cummins Martijn Verburg, JClarity | @karianna

September 2016

Is this a fun talk?

Is this a fun talk?

No. It’s a talk about fun.

Is this a fun talk?

No. It’s a talk about fun.

That’s different.

Is this a fun talk?

No. It’s a talk about fun.

That’s different.

Obviously.

@holly_cumminshttp://ibm.biz/bluemixgaragelondon @holly_cummins @karianna

20 step plan to achieve FUN!1. Quantify and Qualify your FUN metrics

2. Create a Chief FUN Officer (CFO) role

3. Gamify your daily tasks to make them more FUN

4. Enthusiastically high five everyone each morning for FUN

5. Install a FUN ball pit

6. Inject a FUN word of the day into conversations

7. Wear FUN clothing, something with flair

8. Create FUN certificates with gold star systems - relive the fun of kindergarten!

9. Nominate FUN assessors for each team

10.Laugh Out Loud (LOL) once a day in the office, others will enjoy your FUN

A Synopsis of Fun

1. What is Fun?

2. Why are most of our workplaces not Fun?

3. The value of Fun in the workplace.

4. How much Fun can you expect to have?

5. How to achieve Fun.

6. Failing at Fun.

7. Q&A - Are you having Fun yet?

@holly_cumminshttp://ibm.biz/bluemixgaragelondon @holly_cummins @karianna

Are you here to have Fun?

“Dear Boss, I need to go to this conference so I can go to the session on....

FUN!”

Wait. Where’s “fun-loving”?

Are you brave enough to say on your CV that you want your job to be Fun?

Wait. Where’s “fun-loving”?

What is Fun?

A Fun Guy.

(Remember, fun means jokes.)

Defining Fun

"Fun is a point on the intersection of engagement levels and social interaction for a given activity**"

* Fun: An Exploration in its Relevance to Interaction Design - Elise Woolley, 2010** For those of you who like social interaction

Aside: When is fun not-

fun?

Aside: When is fun not-

fun?

Aside: When is fun not-

fun?

When it's your job.

Things that are Fun• Something novel

• Doing something that you're good at

• Completing a task

• Getting fast feedback

• Agile and TDD are arguably Fun. right?

• Creating something new

• Fixing something old

Maslow's Hierarchy of Needs

http://lunchbreath.com/cartoons/thoughts-on-maslows-hierarchy-2/

The Psychology of Fun

The brain has pleasure centres which are triggered when you do something Fun.*

* The speakers do not condone doing 'Fun' things which are harmful to yourself or to others

How do you measure fun?

Excerpted from Elise M. Woolley, B.S., Fun: An Exploration in its Relevance to Interaction Design

That was called the Funtinuum.

That was called the Funtinuum.

If you remember just one thing from this talk …

Programming is Fun!

• It gives pleasure to both types of thinkers:

• Creative

• Logical

Programming is really Fun!

Programming is really Fun!

• It calls to those who enjoy having control over their environment

Programming is really Fun!

• It calls to those who enjoy having control over their environment

• Are developers more inclined to be control freaks / sociopaths / psychopaths?

Programming is really Fun!

• It calls to those who enjoy having control over their environment

• Are developers more inclined to be control freaks / sociopaths / psychopaths?

• The Mad Scientist and Diabolical Developer pseudonyms speak volumes here

What programming language is the most fun?

What programming language is the most fun?

• Clojure?

What programming language is the most fun?

• Clojure?

• Java?

What programming language is the most fun?

• Clojure?

• Java?

• Javascript?

What programming language is the most fun?

• Clojure?

• Java?

• Javascript?

• Python?

What programming language is the most fun?

• Clojure?

• Java?

• Javascript?

• Python?

• Ruby?

What programming language is the most fun?

• Clojure?

• Java?

• Javascript?

• Python?

• Ruby?

• Scala?

What programming language is the most fun?

• Clojure?

• Java?

• Javascript?

• Python?

• Ruby?

• Scala?

• Visual Basic?

@holly_cumminshttp://ibm.biz/bluemixgaragelondon @holly_cummins @karianna

Say … Making noise is kind of fun, isn’t it?

Why are most of our workplaces Not Fun?

The 1980/90's Management Model

Very hierarchical

Control favoured over autonomy

Technology seen as a cost centre

Business / IT Impedance Mismatch

• Business is unable to map requirements to software

• People don't know what they want

• Industry as a while took decades to understand that waterfall fails for most IT projects

• This created conflict / tension and TPS reports - not Fun

The value of Fun in the workplace

IBM IoT Lab, Munich

Research shows: Fun is good for

business.

Research shows: Fun is good for

business.

Research shows: Fun is good for

business.

Research shows: Fun is good for

business.

Studies have shown...

Employee fun

Studies have shown...

Employee fun

Studies have shown...

Employee fun

Less sick leave

Studies have shown...

Employee fun

Less sick leave

Harder working

Studies have shown...

Employee fun

Less sick leave

Harder working

More productivity

“Your brain at positive is 31% more productive than your brain at negative, neutral or stressed. "

https://hbr.org/2012/01/positive-intelligence

"Individuals [who just had watched a comedy video] have approximately

12% greater productivity.*"

https://www2.warwick.ac.uk/fac/soc/economics/staff/eproto/workingpapers/happinessproductivity.pdf

Everyone loves lego trains.

Info Support funded their employees’ lego trains.

Thanks, @johanjanssen42!

Why? Good business.

How much fun can you expect to have?

Limits to Fun

• No one likes working on things that aren’t valuable or useful.

• So if you take that to its extreme, and only do activities if they’re fun and enjoyable, will that work?

• Self-discipline is still needed.

Fun is in the Eye of the Beholder

• When writing this talk....• Martijn thought Structure was Fun!• Holly did not.

• Some things just can't be fun, like dishes or accounting• Unless you love doing dishes?!? • Or accounting?!?

Just because it's Fun, doesn't mean it's good

Just because it's Fun, doesn't mean it's good

"I love the smell of napalm in the morning .... smells like victory.”

Bill Kilgore, Apocalypse Now

"I love the smell of napalm in the morning .... smells like victory.”

Bill Kilgore, Apocalypse Now

Is everyone having fun?

Just because it's Fun, doesn't mean it's good

• Some people love conflict

• Some people enjoy launching lawsuits

• Some people just want to watch the world burn

Fun. What could possibly go wrong?

Fun. What could possibly go wrong?

Fun. What could possibly go wrong?

2008: A developer had a lot of fun with Groovy.

Fun. What could possibly go wrong?

2008: A developer had a lot of fun with Groovy.

Fun. What could possibly go wrong?

2008: A developer had a lot of fun with Groovy.

2009: The others who had to maintain the code had less fun.

Enjoy fun. Responsibly.

IBM _ 43

How to achieve Fun

Warning: This is our context and our experience of Fun. Your culture may be different

Un-Fun

A process being unfun is a red flag that it’s not adding value.

Step 1. Find un-fun things.

Get rid of them.

... because they're probably waste.

Fun Not-Fun

Programming Meetings

Puzzles Mysteries

Criticism Collaboration

Just doing it Process/Ceremony

Learning Repeating

Designing Sizing

Doing Status reporting

Prototyping Hardening

Interactions Interruptions

Making a difference Being a cog

Fun Not-Fun

Programming Meetings

Puzzles Mysteries

Criticism Collaboration

Just doing it Process/Ceremony

Learning Repeating

Designing Sizing

Doing Status reporting

Prototyping Hardening

Interactions Interruptions

Making a difference Being a cog

Streamlined process

Fun Not-Fun

Programming Meetings

Puzzles Mysteries

Criticism Collaboration

Just doing it Process/Ceremony

Learning Repeating

Designing Sizing

Doing Status reporting

Prototyping Hardening

Interactions Interruptions

Making a difference Being a cog

Streamlined process

Pair programming

Fun Not-Fun

Programming Meetings

Puzzles Mysteries

Criticism Collaboration

Just doing it Process/Ceremony

Learning Repeating

Designing Sizing

Doing Status reporting

Prototyping Hardening

Interactions Interruptions

Making a difference Being a cog

Streamlined process

Pair programming

#noestimates

Fun Not-Fun

Programming Meetings

Puzzles Mysteries

Criticism Collaboration

Just doing it Process/Ceremony

Learning Repeating

Designing Sizing

Doing Status reporting

Prototyping Hardening

Interactions Interruptions

Making a difference Being a cog

Streamlined process

Pair programming

#noestimates

Self-generating status

Fun Not-Fun

Programming Meetings

Puzzles Mysteries

Criticism Collaboration

Just doing it Process/Ceremony

Learning Repeating

Designing Sizing

Doing Status reporting

Prototyping Hardening

Interactions Interruptions

Making a difference Being a cog

Streamlined process

Pair programming

#noestimates

Self-generating status

Protect peace

Findable documentation

Fun Not-Fun

Programming Meetings

Puzzles Mysteries

Criticism Collaboration

Just doing it Process/Ceremony

Learning Repeating

Designing Sizing

Doing Status reporting

Prototyping Hardening

Interactions Interruptions

Making a difference Being a cog

Streamlined process

Pair programming

#noestimates

Self-generating status

Protect peace

Findable documentation

We can fix these.Fun Not-Fun

Programming Meetings

Puzzles Mysteries

Criticism Collaboration

Just doing it Process/Ceremony

Learning Repeating

Designing Sizing

Doing Status reporting

Prototyping Hardening

Interactions Interruptions

Making a difference Being a cog

Streamlined process

Pair programming

#noestimates

Self-generating status

Protect peace

Findable documentation

We can fix these.Fun Not-Fun

Programming Meetings

Puzzles Mysteries

Criticism Collaboration

Just doing it Process/Ceremony

Learning Repeating

Designing Sizing

Doing Status reporting

Prototyping Hardening

Interactions Interruptions

Making a difference Being a cog

Streamlined process

Pair programming

#noestimates

Self-generating status

Protect peaceMVP

Findable documentation

We can fix these.Fun Not-Fun

Programming Meetings

Puzzles Mysteries

Criticism Collaboration

Just doing it Process/Ceremony

Learning Repeating

Designing Sizing

Doing Status reporting

Prototyping Hardening

Interactions Interruptions

Making a difference Being a cog

Streamlined process

Pair programming

#noestimates

Self-generating status

Protect peaceMVP

Self-directed teams

Findable documentation

We can fix these.Fun Not-Fun

Programming Meetings

Puzzles Mysteries

Criticism Collaboration

Just doing it Process/Ceremony

Learning Repeating

Designing Sizing

Doing Status reporting

Prototyping Hardening

Interactions Interruptions

Making a difference Being a cog

Streamlined process

Pair programming

#noestimates

Self-generating status

Protect peaceMVP

Self-directed teams

Automation

Make it easy for people to find the information they need to do their job.

Find a good, indexable, solution.

Use it.

@holly_cumminshttp://ibm.biz/bluemixgaragelondon @holly_cummins @karianna

@holly_cumminshttp://ibm.biz/bluemixgaragelondon @holly_cummins @karianna

@holly_cumminshttp://ibm.biz/bluemixgaragelondon @holly_cummins @karianna

Get rid of the stuff that stops us doing what we enjoy.

@holly_cumminshttp://ibm.biz/bluemixgaragelondon @holly_cummins @karianna

Get rid of the stuff that stops us doing what we enjoy.

“We’re short staffed. You’re going to need to cancel all my meetings for a

month so I can do programming.”

@holly_cumminshttp://ibm.biz/bluemixgaragelondon @holly_cummins @karianna

Get rid of the stuff that stops us doing what we enjoy.

“We’re short staffed. You’re going to need to cancel all my meetings for a

month so I can do programming.”

This worked!

Interactions are fun. Interruptions are not.

Interactions are fun. Interruptions are not.

Martijn promises me this is a hilarious in-joke if you're British. Apparently.

Protect your coding time from meetings.

“I’m sorry, since I’m pair-programming, I can’t make

that meeting.”

Pair programming

@holly_cumminshttp://ibm.biz/bluemixgaragelondon @holly_cummins @karianna

#noestimates

Estimates are rarely accurate. Why bother??

@holly_cumminshttp://ibm.biz/bluemixgaragelondon @holly_cummins @karianna

Can adding logging ever be fun?

Prototyping v hardening

@holly_cumminshttp://ibm.biz/bluemixgaragelondon @holly_cummins @karianna

Can adding logging ever be fun?

Prototyping v hardening

Making a difference is fun.

@holly_cumminshttp://ibm.biz/bluemixgaragelondon @holly_cummins @karianna

Can adding logging ever be fun?

Prototyping v hardening

Making a difference is fun.Having a prototype become real is fun.

@holly_cumminshttp://ibm.biz/bluemixgaragelondon @holly_cummins @karianna

Can adding logging ever be fun?

Prototyping v hardening

Making a difference is fun.Having a prototype become real is fun.

Add the logging when you know it actually matters.

@holly_cumminshttp://ibm.biz/bluemixgaragelondon @holly_cummins @karianna

"We don't want to be the prototyping department.”

-- Head of Innovation, A-Client

@holly_cumminshttp://ibm.biz/bluemixgaragelondon @holly_cummins @karianna

Testing should not be part of the hardening phase.

TDD is fun.

TDD

TDD

Automation

Computers don’t expect to have fun (yet)

Let them do the tedious tasks

Bonus: Automating stuff is fun

@holly_cumminshttp://ibm.biz/bluemixgaragelondon @holly_cummins @karianna

Status for all to see.

@holly_cumminshttp://ibm.biz/bluemixgaragelondon @holly_cummins @karianna

Keep stories small, so status is self-reporting.

Daily stand-up. Keep it short.

Status for all to see.

We all hate being told what to do.

Usually, because we know it’s wrong.

Let people make their own decisions.

Step 2: Add fun

Can I have a volunteer?

... or two?

The exercise: Write down your partner’s father’s name.

The exercise: Write down your partner’s father’s name.

Wait, where’s the rigour?

Write down your partner’s father’s name.

We need QA on these letters. Show a draft of each letter to me, first.

Show each letter to the room, so we know what your progress is like.

Wait, where’s the rigour?

Write down your partner’s father’s name.

We need QA on these letters. Show a draft of each letter to me, first.

Show each letter to the room, so we know what your progress is like.

What have we learned?

• Status reporting and code reviews slow things down.

• That was on an earlier slide, but we learned that better through a game :)

Children learn through play. Adults probably do too.

TDD

Build gamification

Build gamification(Strictly speaking, productization of build gamification)

Build gamification can be pretty serious.

Holly's Microservices Demo is a game.

Structure of game mirrors microservices concepts.

Holly's colleague Erin's Microservices Demo is a much better game

Catastrophe gives you a score … Game On gives you a score …

Catastrophe gives you a score … Game On gives you a score …

... but it's not related to how good your microservices are.

Catastrophe gives you a score … Game On gives you a score …

... but it's not related to how good your microservices are.

Is this the same kind of gamification as StackOverflow?

Quirkiness

• Gamification has a goal.

• Fun is the end-goal of quirkiness.

Images: shawcomputing.net, computerhistory.org

Images: shawcomputing.net, computerhistory.org

Images: shawcomputing.net, computerhistory.org

"Is 'Gullible' in the Dictionary?"

QuirkinessHow do a production-train slack-integration right:

IBM _ 87

Failing at

Fun

A layer of fun

A layer of fun … on top of a terrible

workspace …

A layer of fun … on top of a terrible

workspace … is still terrible.

Is being a games tester fun?

Is being a games tester fun?

• Normally, I pay a games company to play games.

Is being a games tester fun?

• Normally, I pay a games company to play games.

• Instead, the games company pays me?

Is being a games tester fun?

• Normally, I pay a games company to play games.

• Instead, the games company pays me?

• Best job in world?

Is being a games tester fun?

• Normally, I pay a games company to play games.

• Instead, the games company pays me?

• Best job in world?

• No, because it's not creative, there's lots of repetition, lots of status tracking...

IBM _ 91

IBM _ 91

Fun is important.

Recap on achieving fun: 1. Get rid of un-fun things 2. Add fun things

Doing 2. without 1. is going to fail.

IBM _ 92

Thank You!

http://ibm.biz/bluemixgaragelondon http://github.com/holly-cummins/catastrophe-microservices

Holly Cummins | @holly_cummins Martijn Verburg | @karianna