SlideShare a Scribd company logo
2016 - Daniel Lebrero - REPL driven development
Confession
Awesome language?
No more incompatibilities?
Me doing some FE work
Me doing some FE work
Immediate Feedback
The Flow or The Zone
Why do we want it?
Productivity
Why do we want it?
Joy
2016 - Daniel Lebrero - REPL driven development
Interruptions
Limits
• 0.1 second is about the limit for having the user
feel that the system is reacting instantaneously
• 1.0 second is about the limit for the user's flow of
thought to stay uninterrupted, even though the
user will notice the delay.
• 10 seconds is about the limit for keeping the user's
attention focused
From book Usability Engineering
Time to compile and start a new Tomcat app
compiling …
done!
30 seconds
Unit tests
“Do not run Tomcat. Embrace TDD.”
Daniel Lebrero
Test Doubles
• Stubs
• Spies
Lies
• Mocks
• Fakes
Lies
Lies!
More lies!
Fat lies!
Credible lies
You are going to run it and …
BUGS!
What do we want from our workflow?
1.Write code with immediate feedback
2.No build or deploy
3.Easy way of creating faithful lies for our tests
4.Tools to understand the real world
5.No surprises when starting the application
REPLRead Eval Print Loop
Our app
code
Results
Clojure
What do we want from our workflow?
1.Learn the language and libraries
2.Write code with immediate feedback
3.No build or deploy
4.Easy way of creating faithful lies for our tests
5.Tools to understand the real world
6.No surprises when starting the application
Demo time!
What do we get with a REPL workflow?
1.Learn the language and libraries
2.Write code with immediate feedback
3.No build or deploy
4.Easy way of creating faithful lies for our tests
5.Tools to understand the real world
6.No surprises when starting the application
7.Run automatically unit test affected by a change
8.Inspect and manage state
9.Stay on the comfort of your favourite IDE
Fewer
Our AppOur App
Staging
Production
NASA
“in May of 1999. […] we were able to debug and
fix a race condition that had not shown up during
ground testing.
Debugging a program running on a $100M piece
of hardware that is 100 million km away is an
interesting experience. Having a read-eval-print
loop running on the spacecraft proved invaluable
in finding and fixing the problem”
Ron Garret - NASA Jet Propulsion Lab Engineer
1.Learn the language and libraries
2.Write code with immediate feedback
3.No build or deploy
4.Easy way of creating faithful lies for our tests
5.Tools to understand the real world
6.Fewer surprises when starting the application
7.Run automatically unit test affected by a change
8.Inspect and manage state
9.Stay in the comfort of your favourite IDE
10.Debug staging and production
11.Control spacecrafts
What do we get with a REPL workflow?
Why do we want it?
bb
Productivity
Joy
compiling next slide…
When do we want it?
• Javascript: https://vimeo.com/123513496
• ClojureScript: https://www.youtube.com/watch?v=KZjFVdU8VLI
• Elm: http://debug.elm-lang.org/
• Groovy: https://www.youtube.com/watch?v=bTRUC78X87g
• Python: https://www.youtube.com/watch?v=EwI-e3WlTew
• iOS: https://www.youtube.com/watch?v=Ci4uviG8S0o
• Android: https://www.youtube.com/watch?v=mVXTcAEKgF8
• Unity: https://www.youtube.com/watch?v=tJr_TD1BtF0
• Music: https://www.youtube.com/watch?v=yY1FSsUV-8c
I want one!
https://github.com/IG-Group/jug-repl-driven-development-talk
References
– Bret Victor – Inventing by principle
https://vimeo.com/36579366
– Ron Garret – The Remote Agent Experiment:
Debugging Code from 60 Million Miles Away
https://www.youtube.com/watch?v=_gZK0tW8EhQ
– Jakob Nielsen – Usability Engineering
https://www.nngroup.com/books/usability-engineering/
?
@DanLebrero
daniel.lebreroberna@ig.com
danlebrero.com
@IGLabs @LifeAtIG
labs.ig.com/blog
www.iggroup.com/careers/teams/technology

More Related Content

PPTX
Make Your UI Tests Resilient with the Next Generation of Frameworks
PDF
Karl Krukow - What's new and cool in xamarin test cloud - Xamarin Dev Days Si...
PDF
How we've built Yahoo Fantasy Football (Droidcon Italy '15)
PDF
BHack 2012 - How to protect your web applications
PDF
How To Do Kick-Ass Software Development
PDF
Api Days Berlin - Continuous Updating
PDF
Translating Tester-Speak Into Plain English: Simple Explanations for 8 Testin...
PDF
7 Keys for Unattended Test AUtomation webinar deck
Make Your UI Tests Resilient with the Next Generation of Frameworks
Karl Krukow - What's new and cool in xamarin test cloud - Xamarin Dev Days Si...
How we've built Yahoo Fantasy Football (Droidcon Italy '15)
BHack 2012 - How to protect your web applications
How To Do Kick-Ass Software Development
Api Days Berlin - Continuous Updating
Translating Tester-Speak Into Plain English: Simple Explanations for 8 Testin...
7 Keys for Unattended Test AUtomation webinar deck

What's hot (16)

PDF
8 Blind Spots Often Overlooked When Testing on Mobile
PDF
21 Ways to Awesome-ize Your Mobile Toolkit
PDF
Pivotal CenturyLink Cloud Platform Seminar Presentations: Enabling Continuous...
PDF
Atlassian: The latest and greatest - May/June 2013
PDF
The Art of Defensive Programming By Ipan Ardian
PDF
How to Scale Mobile Testing Across Several Teams
PPTX
01 simple program
PDF
Continuous Delivery for Mobile
PDF
Jeremias Rößler
PPTX
When & How to Successfully use Test Automation for Mobile Applications
PDF
XRebel Overview
PDF
Key note Manish and Deepa
PDF
Fixing security by fixing software development
PPT
Automated Testing and Continuous Integration for Mobile Apps: Jenkins & Cloud...
PDF
Faster Secure Software Development with Continuous Deployment - PH Days 2013
PDF
Just4Meeting 2012 - How to protect your web applications
8 Blind Spots Often Overlooked When Testing on Mobile
21 Ways to Awesome-ize Your Mobile Toolkit
Pivotal CenturyLink Cloud Platform Seminar Presentations: Enabling Continuous...
Atlassian: The latest and greatest - May/June 2013
The Art of Defensive Programming By Ipan Ardian
How to Scale Mobile Testing Across Several Teams
01 simple program
Continuous Delivery for Mobile
Jeremias Rößler
When & How to Successfully use Test Automation for Mobile Applications
XRebel Overview
Key note Manish and Deepa
Fixing security by fixing software development
Automated Testing and Continuous Integration for Mobile Apps: Jenkins & Cloud...
Faster Secure Software Development with Continuous Deployment - PH Days 2013
Just4Meeting 2012 - How to protect your web applications
Ad

Viewers also liked (7)

PDF
JDD 2016 - Pawel Szulc - Writing Your Wwn RDD For Fun And Profit
PDF
JDD 2016 - Christin Gorman - Concurrency in Java
PDF
JDD 2016 - Pawel Byszewski - Kotlin, why?
PDF
JDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go Wrong
PDF
JDD 2016 - Grzegorz Piwowarek - Davaslang - Functional Java Done Right
PDF
JDD 2016 - Michał Balinski, Oleksandr Goldobin - Practical Non Blocking Micro...
PPTX
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
JDD 2016 - Pawel Szulc - Writing Your Wwn RDD For Fun And Profit
JDD 2016 - Christin Gorman - Concurrency in Java
JDD 2016 - Pawel Byszewski - Kotlin, why?
JDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go Wrong
JDD 2016 - Grzegorz Piwowarek - Davaslang - Functional Java Done Right
JDD 2016 - Michał Balinski, Oleksandr Goldobin - Practical Non Blocking Micro...
JDD 2016 - Wojciech Oczkowski - Testowanie Wydajnosci Za Pomoca Narzedzia JMH
Ad

Similar to 2016 - Daniel Lebrero - REPL driven development (20)

PDF
Dive into POOSL : Simulate your systems!
PPTX
Principles and patterns for test driven development
KEY
TxJS 2011
PDF
Good ideas that we forgot
PDF
Recursion & Erlang, FunctionalConf 14, Bangalore
PPTX
Techorama 2017 - Testing the unit, and beyond.
PDF
Let's test!
PPTX
Tools for the Toolmakers
ODP
DevOps Days Vancouver 2014 Slides
PDF
Agile Software Testing the Agilogy Way
PPTX
Issta11
PPTX
The Power of Feedback Loops
PDF
Shortening the feedback loop: faster and better code development
PDF
Raising the Bar
PDF
Boo Manifesto
PDF
Programming Languages #devcon2013
PDF
FP Days: Down the Clojure Rabbit Hole
PPT
Automatic Assessment of Failure Recovery in Erlang Applications
PDF
Angus Fletcher - Error Handling in Concurrent Systems
PDF
Resilience Engineering: A field of study, a community, and some perspective s...
Dive into POOSL : Simulate your systems!
Principles and patterns for test driven development
TxJS 2011
Good ideas that we forgot
Recursion & Erlang, FunctionalConf 14, Bangalore
Techorama 2017 - Testing the unit, and beyond.
Let's test!
Tools for the Toolmakers
DevOps Days Vancouver 2014 Slides
Agile Software Testing the Agilogy Way
Issta11
The Power of Feedback Loops
Shortening the feedback loop: faster and better code development
Raising the Bar
Boo Manifesto
Programming Languages #devcon2013
FP Days: Down the Clojure Rabbit Hole
Automatic Assessment of Failure Recovery in Erlang Applications
Angus Fletcher - Error Handling in Concurrent Systems
Resilience Engineering: A field of study, a community, and some perspective s...

Recently uploaded (20)

PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Empathic Computing: Creating Shared Understanding
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
cuic standard and advanced reporting.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Electronic commerce courselecture one. Pdf
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPT
Teaching material agriculture food technology
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
MYSQL Presentation for SQL database connectivity
Digital-Transformation-Roadmap-for-Companies.pptx
Empathic Computing: Creating Shared Understanding
Mobile App Security Testing_ A Comprehensive Guide.pdf
cuic standard and advanced reporting.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Electronic commerce courselecture one. Pdf
MIND Revenue Release Quarter 2 2025 Press Release
Teaching material agriculture food technology
Understanding_Digital_Forensics_Presentation.pptx
Review of recent advances in non-invasive hemoglobin estimation
sap open course for s4hana steps from ECC to s4
Building Integrated photovoltaic BIPV_UPV.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Network Security Unit 5.pdf for BCA BBA.
MYSQL Presentation for SQL database connectivity

2016 - Daniel Lebrero - REPL driven development

  • 5. Me doing some FE work
  • 6. Me doing some FE work Immediate Feedback
  • 7. The Flow or The Zone
  • 8. Why do we want it? Productivity
  • 9. Why do we want it? Joy
  • 12. Limits • 0.1 second is about the limit for having the user feel that the system is reacting instantaneously • 1.0 second is about the limit for the user's flow of thought to stay uninterrupted, even though the user will notice the delay. • 10 seconds is about the limit for keeping the user's attention focused From book Usability Engineering
  • 13. Time to compile and start a new Tomcat app compiling … done! 30 seconds
  • 14. Unit tests “Do not run Tomcat. Embrace TDD.” Daniel Lebrero
  • 15. Test Doubles • Stubs • Spies Lies • Mocks • Fakes Lies Lies! More lies! Fat lies!
  • 17. You are going to run it and … BUGS!
  • 18. What do we want from our workflow? 1.Write code with immediate feedback 2.No build or deploy 3.Easy way of creating faithful lies for our tests 4.Tools to understand the real world 5.No surprises when starting the application
  • 22. What do we want from our workflow? 1.Learn the language and libraries 2.Write code with immediate feedback 3.No build or deploy 4.Easy way of creating faithful lies for our tests 5.Tools to understand the real world 6.No surprises when starting the application
  • 24. What do we get with a REPL workflow? 1.Learn the language and libraries 2.Write code with immediate feedback 3.No build or deploy 4.Easy way of creating faithful lies for our tests 5.Tools to understand the real world 6.No surprises when starting the application 7.Run automatically unit test affected by a change 8.Inspect and manage state 9.Stay on the comfort of your favourite IDE Fewer
  • 26. NASA “in May of 1999. […] we were able to debug and fix a race condition that had not shown up during ground testing. Debugging a program running on a $100M piece of hardware that is 100 million km away is an interesting experience. Having a read-eval-print loop running on the spacecraft proved invaluable in finding and fixing the problem” Ron Garret - NASA Jet Propulsion Lab Engineer
  • 27. 1.Learn the language and libraries 2.Write code with immediate feedback 3.No build or deploy 4.Easy way of creating faithful lies for our tests 5.Tools to understand the real world 6.Fewer surprises when starting the application 7.Run automatically unit test affected by a change 8.Inspect and manage state 9.Stay in the comfort of your favourite IDE 10.Debug staging and production 11.Control spacecrafts What do we get with a REPL workflow?
  • 28. Why do we want it? bb Productivity Joy compiling next slide…
  • 29. When do we want it? • Javascript: https://vimeo.com/123513496 • ClojureScript: https://www.youtube.com/watch?v=KZjFVdU8VLI • Elm: http://debug.elm-lang.org/ • Groovy: https://www.youtube.com/watch?v=bTRUC78X87g • Python: https://www.youtube.com/watch?v=EwI-e3WlTew • iOS: https://www.youtube.com/watch?v=Ci4uviG8S0o • Android: https://www.youtube.com/watch?v=mVXTcAEKgF8 • Unity: https://www.youtube.com/watch?v=tJr_TD1BtF0 • Music: https://www.youtube.com/watch?v=yY1FSsUV-8c
  • 31. References – Bret Victor – Inventing by principle https://vimeo.com/36579366 – Ron Garret – The Remote Agent Experiment: Debugging Code from 60 Million Miles Away https://www.youtube.com/watch?v=_gZK0tW8EhQ – Jakob Nielsen – Usability Engineering https://www.nngroup.com/books/usability-engineering/

Editor's Notes

  • #3: But before we get started, I have a confession to make. On my very first job I got to work with 3 technologies that made a profound and lasting impact on my career as a developer. Those 3 technologies were Netscape, IE4 and IE5. Thanks to those technologies, I decided to become a BE developer and I have avoided any kind of FE related work for a very long time, being a happy Java developer living on a world of XML and JSON. But in a recent project, I ended up working hand in hand with a team of FE developers, and I have to confess that since that project, I have been really jealous of the FE guys. You may be wonder what makes me so jealous?
  • #4: Maybe the JS that they use was somehow different from the JS that I learned and suffer 15 years ago? A little but not enough.
  • #5: Maybe they have fixed all those incompatibilities between browsers that used to drive me mad? Nop, they still exists. So, to understand why I am really jealous about the FE developers, lets see a picture of myself doing some FE work
  • #6: Yeah, that is me trying to get a 2 column layout working in IE and Opera, and as you can see I am not very good at it, and as much as I try and I try, I always end up with the same end result, a pile a crap. But even if CSS doesn't make any sense to me at all, there is something really nice on this picture. Lets watch it again.
  • #7: Focus on Mr. Griffin’s workflow. See how he pulls from a string and he sees straight away, without any delay the effect on the blind. And if he doesn't like what he sees, he just pulls the string in a different direction. And he keeps pulling and pulling until he is done. This is what I really really miss on my day to day job. This is what makes me jealous of the FE devs. That immediate feedback. We know from Agile, Scrum and Lean, that feedback loops are important and the shorter the feedback loop, the better. But why is this immediate feedback so important during development?
  • #8: Because without that immediate feedback, it is very hard to get into the Zone or the Flow. The Zone is that state where you feel like Neo when he realises that he is the chosen one. It is just you and the code. You are so focus, that the real world disappears, and instead you can see with absolute clarity your application, its code, its design and the data flowing around it. When you are in the Flow no problem is difficult enough, no bug can hide from you and your solutions are simple, clean and elegant.
  • #9: When you are in the flow is when you are the most productive, and not only are you able to produce more, but what you produce, the code and its design is of a better quality. But this productivity is just a nice side effect of being in the flow.
  • #10: What we are looking for is that feeling of joy, that feeling of achievement, that feeling of creating something truly beautiful. And is this feeling is why I am after 16 years still a developer.
  • #12: And we, BE developers, are expert on those interruptions. And we have gotten so use to it, that we think it is unavoidable. We even have comics about it