Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Coding Dojo Vienna:
Functional Calisthenics
Session 20160120
Peter Kofler, ‘Code Cop’
@codecopkofler
www.code-cop.org
Copy...
Peter Kofler
• Ph.D. (Appl. Math.)
• Professional Software
Developer for 15 years
• “fanatic about code quality”
• Freelan...
I help development teams with
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
●
Professionalism
●
Quality and
Produc...
Mentoring
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
●
Pair Programming
●
Programming
Workshops
●
Deliberate
Pr...
Developing Quality
Software Developers
Coding Dojo Mindset
●
Safe place outside
work
●
We are here to learn
●
Need to slow down
●
Focus on doing it right
●
Colla...
Constraints
●
Challenges during a dojo or coderetreat
●
Moving to the extreme is a way of learning
●
Examples
●
Missing To...
“Calisthenics” Constraint
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Functional Calisthenics
● Side effects only at the top level (outside domain)
● No mutable state
● Expressions not stateme...
Assignment
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Social Network Kata
● Implement a social networking application like Twitter.
● Use the console for input and output.
● Us...
Prepare
●
Find a pair.
●
Agree on a (functional) prog. language.
●
Set up the environment.
●
Create new project.
●
Add a t...
Don't Focus on
Getting it Done.
F0cus on Doing
It Perfectly.
Closing Circle
●
What did you learn today?
●
What surprised you today?
●
What will you do
differently in the
future?
PETER...
Peter Kofler
@codecopkofler
www.code-cop.org
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
CC Images
●
Bruce http://www.flickr.com/photos/sherpas428/4350620602/
●
pairing http://www.flickr.com/photos/dav/94735395/...
Upcoming SlideShare
Loading in …5
×

Coding Dojo: Functional Calisthenics (2016)

615 views

Published on

Coding Dojo. See http://blog.ninjaferret.co.uk/2015/06/05/Introducing-Functional-Calisthenics.html

Published in: Technology

Coding Dojo: Functional Calisthenics (2016)

  1. 1. Coding Dojo Vienna: Functional Calisthenics Session 20160120 Peter Kofler, ‘Code Cop’ @codecopkofler www.code-cop.org Copyright Peter Kofler, licensed under CC-BY.
  2. 2. Peter Kofler • Ph.D. (Appl. Math.) • Professional Software Developer for 15 years • “fanatic about code quality” • Freelance Code Mentor PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  3. 3. I help development teams with PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY ● Professionalism ● Quality and Productivity ● Continuous Improvement
  4. 4. Mentoring PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY ● Pair Programming ● Programming Workshops ● Deliberate Practice, e.g. Coding Dojos
  5. 5. Developing Quality Software Developers
  6. 6. Coding Dojo Mindset ● Safe place outside work ● We are here to learn ● Need to slow down ● Focus on doing it right ● Collaborative Game PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  7. 7. Constraints ● Challenges during a dojo or coderetreat ● Moving to the extreme is a way of learning ● Examples ● Missing Tool (No Mouse, …) ● Missing Feature (No IFs, …) PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  8. 8. “Calisthenics” Constraint PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  9. 9. Functional Calisthenics ● Side effects only at the top level (outside domain) ● No mutable state ● Expressions not statements (and use return value) ● Functions should have one argument ● No explicit recursion ● Maximum type-level abstraction (generic argument types) ● Always use/allow infinite sequences ● No "if" ● Name everything (types for primitives, tuples, lambdas) ● Use intermediates (no chaining of function calls) ● Don't abbreviate (e.g. full verbs and nouns in names) PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://blog.ninjaferret.co.uk/2015/06/05/Introducing-Functional-Calisthenics.html
  10. 10. Assignment PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  11. 11. Social Network Kata ● Implement a social networking application like Twitter. ● Use the console for input and output. ● Users submit commands to the application. ● Commands always start with the user’s name. ● posting: <user name> -> <message> ● reading: <user name> ● following: <user name> follows <another user> ● wall: <user name> wall ● Ignore all user errors and exceptions. ● Assume all users will use the same terminal. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://monospacedmonologues.com/post/49250842364/the-social-networking-kata
  12. 12. Prepare ● Find a pair. ● Agree on a (functional) prog. language. ● Set up the environment. ● Create new project. ● Add a testing framework. ● Implement the Social Network. ● Obey the rules! PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  13. 13. Don't Focus on Getting it Done. F0cus on Doing It Perfectly.
  14. 14. Closing Circle ● What did you learn today? ● What surprised you today? ● What will you do differently in the future? PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  15. 15. Peter Kofler @codecopkofler www.code-cop.org PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  16. 16. CC Images ● Bruce http://www.flickr.com/photos/sherpas428/4350620602/ ● pairing http://www.flickr.com/photos/dav/94735395/ ● dojo http://www.flickr.com/photos/49715404@N00/3267627038/ ● calisthenics https://www.flickr.com/photos/snickclunk/18522120656/ ● cards https://www.flickr.com/photos/kt/5018975096/ ● wants you http://www.flickr.com/photos/shutter/105497713/ PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

×