SlideShare a Scribd company logo
A Mozaic Works signature event
Brutal Coding
Constraints
Peter Kofler, ‘Code Cop’
@codecopkofler
(Martin Klose @martinklose)
Copyright Peter Kofler, licensed under CC-BY.
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
I help development teams with
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
●
Professionalism
●
Quality and
Productivity
●
Continuous
Improvement
Mentoring
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
●
Pair Programming
●
Programming
Workshops
●
Deliberate
Practice, e.g.
Coding Dojos
Developing Quality
Software Developers
Brutal Constraints?
Expectations?
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
Nathaniel Pryce, http://www.doc.ic.ac.uk/~np2/teaching/
Red Green Refactor
Tic-Tac-Toe
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Assignment
●
http://en.wikipedia.org/wiki/Tic-tac-toe
●
Board 3x3
●
X plays first, O plays second
●
Implement
●
2 Player Game
●
Determine Winner
●
AI Bot Player
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
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
“Brutal” Coding Constraint
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Brutal Coding Constraints
1. No Conditionals (also no ?: )
2. No Loops
3. TDD as if You Meant It (optional)
4. No Naked Primitives (no Set/Map/List)
5. All functions return something
6. All data is immutable
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Try it!
Short Retrospective
●
How did it work out?
●
How do you feel?
●
What did you
learn and want
to share with
the group?
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Peter Kofler
@codecopkofler
www.code-cop.org
and
Martin Klose
@martinklose
www.klosebrothers.de
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/
●
dojo http://www.flickr.com/photos/49715404@N00/3267627038/
●
game http://www.flickr.com/photos/benclinch/476855843/
●
Playmobil http://www.flickr.com/photos/williac/99551756/
●
wants you http://www.flickr.com/photos/shutter/105497713/
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

More Related Content

What's hot (20)

PDF
Coding Dojo: Data Munging (2016)
Peter Kofler
 
PDF
Clean Readable Specifications (ETC 2016)
Peter Kofler
 
PDF
Coding Dojo: Functional Calisthenics (2016)
Peter Kofler
 
PDF
The Brutal Refactoring Game (2013)
Peter Kofler
 
PDF
Coding Dojo: Bank OCR Outside-In (2015)
Peter Kofler
 
PDF
Designing Test Cases for the Gilded Rose Kata (2013)
Peter Kofler
 
PDF
Code Retreat Graz, Austria 2013
Peter Kofler
 
PDF
TDD as if You Meant It (2013)
Peter Kofler
 
PDF
Coding Dojo: Baby Steps Push Challenge (2021)
Peter Kofler
 
PDF
Software Craftsmanship Journeyman Tour (2013)
Peter Kofler
 
PDF
Deliberate Practice, New Learning Styles (2015)
Peter Kofler
 
PDF
Extract Method Refactoring Workshop (2016)
Peter Kofler
 
PDF
Coding Dojo: Adding Tests to Legacy Code (2014)
Peter Kofler
 
PDF
Refactoring the Tennis Kata (2013)
Peter Kofler
 
PDF
Idiomatic R for Rosetta Code (2013)
Peter Kofler
 
PDF
Coding Dojo: Mars Rover (2014)
Peter Kofler
 
PDF
Coding Dojo: Naming with Dices (2021)
Peter Kofler
 
PDF
Using Automated Code Reviews to Achieve Continuous Quality (ASQF Agile Night ...
Peter Kofler
 
PDF
Outside-in Test Driven Development - the London School of TDD
Peter Kofler
 
PDF
Pair Programming (2015)
Peter Kofler
 
Coding Dojo: Data Munging (2016)
Peter Kofler
 
Clean Readable Specifications (ETC 2016)
Peter Kofler
 
Coding Dojo: Functional Calisthenics (2016)
Peter Kofler
 
The Brutal Refactoring Game (2013)
Peter Kofler
 
Coding Dojo: Bank OCR Outside-In (2015)
Peter Kofler
 
Designing Test Cases for the Gilded Rose Kata (2013)
Peter Kofler
 
Code Retreat Graz, Austria 2013
Peter Kofler
 
TDD as if You Meant It (2013)
Peter Kofler
 
Coding Dojo: Baby Steps Push Challenge (2021)
Peter Kofler
 
Software Craftsmanship Journeyman Tour (2013)
Peter Kofler
 
Deliberate Practice, New Learning Styles (2015)
Peter Kofler
 
Extract Method Refactoring Workshop (2016)
Peter Kofler
 
Coding Dojo: Adding Tests to Legacy Code (2014)
Peter Kofler
 
Refactoring the Tennis Kata (2013)
Peter Kofler
 
Idiomatic R for Rosetta Code (2013)
Peter Kofler
 
Coding Dojo: Mars Rover (2014)
Peter Kofler
 
Coding Dojo: Naming with Dices (2021)
Peter Kofler
 
Using Automated Code Reviews to Achieve Continuous Quality (ASQF Agile Night ...
Peter Kofler
 
Outside-in Test Driven Development - the London School of TDD
Peter Kofler
 
Pair Programming (2015)
Peter Kofler
 

Similar to Brutal Coding Constraints (ITAKE 2017) (20)

PDF
Coding Dojo: Fun with Tic-Tac-Toe (2014)
Peter Kofler
 
PDF
Global Day of Code Retreat (2013)
Peter Kofler
 
PDF
Deliberate Practice (2014)
Peter Kofler
 
PDF
Coding Dojo: Baby Steps (2014)
Peter Kofler
 
PDF
GDCR15 in Las Palmas, Gran Canaria
Peter Kofler
 
PDF
Coding Dojo: Roman Numerals (2014)
Peter Kofler
 
PDF
My Favorite Topic: Me (2011)
Peter Kofler
 
PDF
Code Quality Assurance v4 (2013)
Peter Kofler
 
PDF
Designing Test Cases for the Gilded Rose Kata v2 (2015)
Peter Kofler
 
PDF
Coding Dojo: Tic-Tac-Toe (2014)
Peter Kofler
 
PDF
How To Handle Your Tech Debt Better - Sean Moir
Mike Harris
 
PDF
Coding Dojo: Bank OCR (2014)
Peter Kofler
 
ODP
Coderetreat @AgileFinland Helsinki 2014 11 13
Adi Bolboaca
 
PDF
22_11_2019 «Gamifying a software testing course with the Code Defenders Testi...
eMadrid network
 
PPT
Blackboxtesting 02 An Example Test Series
nazeer pasha
 
PDF
Coderetreat @Sibiu 2012 08 18
Adi Bolboaca
 
PDF
QA - Not Only Bugs (2016)
Jana Gierloff
 
KEY
Adastral Park code retreat introduction
Kerry Buckley
 
PDF
Pair Programming (2014)
Peter Kofler
 
PPTX
Clean Code
ssusera3d06b1
 
Coding Dojo: Fun with Tic-Tac-Toe (2014)
Peter Kofler
 
Global Day of Code Retreat (2013)
Peter Kofler
 
Deliberate Practice (2014)
Peter Kofler
 
Coding Dojo: Baby Steps (2014)
Peter Kofler
 
GDCR15 in Las Palmas, Gran Canaria
Peter Kofler
 
Coding Dojo: Roman Numerals (2014)
Peter Kofler
 
My Favorite Topic: Me (2011)
Peter Kofler
 
Code Quality Assurance v4 (2013)
Peter Kofler
 
Designing Test Cases for the Gilded Rose Kata v2 (2015)
Peter Kofler
 
Coding Dojo: Tic-Tac-Toe (2014)
Peter Kofler
 
How To Handle Your Tech Debt Better - Sean Moir
Mike Harris
 
Coding Dojo: Bank OCR (2014)
Peter Kofler
 
Coderetreat @AgileFinland Helsinki 2014 11 13
Adi Bolboaca
 
22_11_2019 «Gamifying a software testing course with the Code Defenders Testi...
eMadrid network
 
Blackboxtesting 02 An Example Test Series
nazeer pasha
 
Coderetreat @Sibiu 2012 08 18
Adi Bolboaca
 
QA - Not Only Bugs (2016)
Jana Gierloff
 
Adastral Park code retreat introduction
Kerry Buckley
 
Pair Programming (2014)
Peter Kofler
 
Clean Code
ssusera3d06b1
 
Ad

More from Peter Kofler (6)

PDF
Writing Tests with the Unity Test Framework
Peter Kofler
 
PDF
Pragmatic Introduction to Python Unit Testing (PyDays 2018)
Peter Kofler
 
PDF
Pragmatic Introduction to PHP Unit Testing (2015)
Peter Kofler
 
PDF
Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)
Peter Kofler
 
PDF
Code Refactoring - Live Coding Demo (JavaDay 2014)
Peter Kofler
 
PDF
Prime Factors Code Kata - Practicing TDD (2014)
Peter Kofler
 
Writing Tests with the Unity Test Framework
Peter Kofler
 
Pragmatic Introduction to Python Unit Testing (PyDays 2018)
Peter Kofler
 
Pragmatic Introduction to PHP Unit Testing (2015)
Peter Kofler
 
Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)
Peter Kofler
 
Code Refactoring - Live Coding Demo (JavaDay 2014)
Peter Kofler
 
Prime Factors Code Kata - Practicing TDD (2014)
Peter Kofler
 
Ad

Recently uploaded (20)

DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 

Brutal Coding Constraints (ITAKE 2017)