Software Developers Guide to Fun in the Workplace: Euphoria Despite the Despair
-
Upload
holly-cummins -
Category
Software
-
view
1.196 -
download
0
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