SlideShare a Scribd company logo
Yves Caseau - The Joy of Programming – June 2018 1/9
 
// finds a cell with a min count (heuristic)
findPivot(g:Grid) : any
-> let minv := 10, cmin := unknown in
(for c in g.cells
(if (c.value = 0 & c.count < minv)
(minv := c.count, cmin := c)),
cmin)
// solves a sudoku : branch on possible
// values using a recursive function
// branch(...) does all the work :)
solve(g:Grid) : boolean
-> when c := findPivot(g) in
exists(v in (1 .. 9) |
(if c.possible[v]
branch((c.value := v,
solve(g)))
else false))
else true
// first propagation rule
r1() :: rule(  c.value := v =>
(store(c.line.counts,v,0),
store(c.column.counts,v,0),
store(c.square.counts,v,0),
for v2 in (1 .. 9)
(if (v != v2 & c.possible[v2]) noLonger(c,v2),
for c2 in (c.line.cells but c) forbid(c2,v),
for c2 in (c.column.cells but c) forbid(c2,v),
for c2 in (c.square.cells but c) forbid(c2,v))))
// if c.count = 1, the only possible value is certain
r2() :: rule( c.count := y & y = 1 =>
c.value := some(y in (1 .. 9) | c.possible[y]))
// if a value v is possible only in one cell, it is certain
r3() :: rule( updateCount(cs,v) & cs.counts[v] <= 1
=> when c := some(c in cs.cells |
c.value = 0 & c.possible[v]) in
c.value := v
else contradiction!())
Yves Caseau
Michelin Group CIO
NATF (National Academy of Technologies of France)
Thinking, Designing, Writing,Thinking, Designing, Writing,
Testing … and Living with Code:Testing … and Living with Code:
Software in the 21Software in the 21stst
centurycenturyYves Caseau
Group CIO, Michelin
NATF
ADN Meetup, Le Crest
June 28th
, 2018 (v0.5)
Yves Caseau - The Joy of Programming – June 2018 2/9
The Need for Elegant ProgrammingThe Need for Elegant Programming
Constant change : love your code 
 Constant change & constant training
Refactoring : your code is a garden !
Yves Caseau - The Joy of Programming – June 2018 3/9
Software Development is a Team SportSoftware Development is a Team Sport
The world moves too fast to stay alone
 Build up your community
 Share your code to hire extra eye balls
Yves Caseau - The Joy of Programming – June 2018 4/9
Software is about Experience, not FunctionsSoftware is about Experience, not Functions
 User Experience Design is critical
 Cross-functional squads required
 Polyvalence makes collaboration easier
Yves Caseau - The Joy of Programming – June 2018 5/9
Always Ask for Help !Always Ask for Help !
In the 21st
century, to code starts with search
 Get in touch with your community for regular training
Leverage the power of MOOCs – Be curious !
Yves Caseau - The Joy of Programming – June 2018 6/9
Thinking and Doing in a Constant Learning LoopThinking and Doing in a Constant Learning Loop
 Analysts and Developers : 20th
century concepts 
 From mechanical design to organic growth
 Real-life operability issues makes delightful math problems
Yves Caseau - The Joy of Programming – June 2018 7/9
Good Software is Grown From Quantified FeedbackGood Software is Grown From Quantified Feedback
 Listen constantly to your users 
 Learn from measures – grow from your mistakes
 There is no user satisfaction without fast response time
Yves Caseau - The Joy of Programming – June 2018 8/9
Remember that You Belong to an EcosystemRemember that You Belong to an Ecosystem
 Your app is not isolated – recognize the system you are in
 Your users are not isolated – recognize the flows
 Don’t aim to be a “solution consultant” – be a magician !
Yves Caseau - The Joy of Programming – June 2018 9/9
ConclusionConclusion
Thank you for inviting me 
There has never been a better time
to write code 
Don’t build walls around yourselves 
 Let’s complete the Lean & Agile deployment
Yves Caseau - The Joy of Programming – June 2018 9/9
ConclusionConclusion
Thank you for inviting me 
There has never been a better time
to write code 
Don’t build walls around yourselves 
 Let’s complete the Lean & Agile deployment

More Related Content

PDF
Lean and agile software because or despite rising complexity by Yves Caseau
PPT
XEBICON Public November 2015
PDF
XebiConFr 15 - AXA : Transformation digitale, les enjeux d'un grand groupe (Y...
PDF
A change in perspective
PDF
Caring about Code Quality
PDF
Tech Talk @ Dev Bootcamp Chicago
PDF
Techniques for Automated Software Evolution
PPT
The European CIO Conference - November 27th, 2014
Lean and agile software because or despite rising complexity by Yves Caseau
XEBICON Public November 2015
XebiConFr 15 - AXA : Transformation digitale, les enjeux d'un grand groupe (Y...
A change in perspective
Caring about Code Quality
Tech Talk @ Dev Bootcamp Chicago
Techniques for Automated Software Evolution
The European CIO Conference - November 27th, 2014

Similar to Software Pitch 2018 (20)

PDF
A Philosophy Of Software Design John Ousterhout
PDF
GOTO Berlin - When Code Cries
PPTX
Programming contests and competitions
PDF
Write More Durable Code: Principles and Techniques
PPT
OO Development 1 - Introduction to Object-Oriented Development
PDF
caring_about_code_quality
PDF
Meaningful code - BeCode Brussels - August 2018
PDF
Surviving a Hackathon and Beyond
PDF
A Philosophy Of Software Design Ousterhout John
PDF
How To Win At Software - Advice for New Engineers - by Gabe Johnson
PPTX
Powerful software linkedin
PDF
The View - Lotusscript coding best practices
PDF
DEF CON 27 - workshop - EIGENTOURIST - hacking with monads
PPTX
Working effectively with legacy codes
PDF
Lecture 7 program development issues (supplementary)
PPTX
Shut Up And Eat Your Veg
PPTX
Slides for Houston iPhone Developers' Meetup (April 2012)
 
PDF
Let's Make the PAIN Visible!
PDF
Melbourne, Australia Global Day of Code Retreat 2018 gdcr18 - Event Slides
PPTX
11 rules for programmer should live by
A Philosophy Of Software Design John Ousterhout
GOTO Berlin - When Code Cries
Programming contests and competitions
Write More Durable Code: Principles and Techniques
OO Development 1 - Introduction to Object-Oriented Development
caring_about_code_quality
Meaningful code - BeCode Brussels - August 2018
Surviving a Hackathon and Beyond
A Philosophy Of Software Design Ousterhout John
How To Win At Software - Advice for New Engineers - by Gabe Johnson
Powerful software linkedin
The View - Lotusscript coding best practices
DEF CON 27 - workshop - EIGENTOURIST - hacking with monads
Working effectively with legacy codes
Lecture 7 program development issues (supplementary)
Shut Up And Eat Your Veg
Slides for Houston iPhone Developers' Meetup (April 2012)
 
Let's Make the PAIN Visible!
Melbourne, Australia Global Day of Code Retreat 2018 gdcr18 - Event Slides
11 rules for programmer should live by
Ad

More from Yves Caseau (20)

PPT
Systemic Simulation of Smart Grids: Evolutionary Game Theory
PDF
A System Dynamics Model for Global Warming Impact, from Energy Transition to...
PPTX
CCEM2023.pptx
PPTX
DataAquitaine February 2022
PPT
Global warming dynamic gamesv0.3
PPT
Machine Learning for Self-Tracking
PDF
Information Systems for Digital Transformation
PPTX
Lean from the guts
PPT
Taking advantageofai july2018
PPT
Intelligence Artificielle - Journée MEDEF & AFIA
PDF
Big data, Behavioral Change and IOT Architecture
PPTX
Smart selfnovember2013
PPT
Management socialnetworksfeb2012
PPT
Google socialnetworksmarch08
PPT
Managing Business Processes Communication and Performance
PPTX
Smart homeamsterdamoctober2013
PPT
Entreprise troispointzeropublicjan2015
PPTX
GTES UTC 2014
PPT
Disic mars2014
PDF
Lean entreprisetwodotzerodauphinefev2014
Systemic Simulation of Smart Grids: Evolutionary Game Theory
A System Dynamics Model for Global Warming Impact, from Energy Transition to...
CCEM2023.pptx
DataAquitaine February 2022
Global warming dynamic gamesv0.3
Machine Learning for Self-Tracking
Information Systems for Digital Transformation
Lean from the guts
Taking advantageofai july2018
Intelligence Artificielle - Journée MEDEF & AFIA
Big data, Behavioral Change and IOT Architecture
Smart selfnovember2013
Management socialnetworksfeb2012
Google socialnetworksmarch08
Managing Business Processes Communication and Performance
Smart homeamsterdamoctober2013
Entreprise troispointzeropublicjan2015
GTES UTC 2014
Disic mars2014
Lean entreprisetwodotzerodauphinefev2014
Ad

Recently uploaded (20)

PDF
How Creative Agencies Leverage Project Management Software.pdf
PPTX
Transform Your Business with a Software ERP System
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
Materi_Pemrograman_Komputer-Looping.pptx
PPTX
Introduction to Artificial Intelligence
PDF
Understanding Forklifts - TECH EHS Solution
PPTX
Mastering-Cybersecurity-The-Crucial-Role-of-Antivirus-Support-Services.pptx
PPTX
ISO 45001 Occupational Health and Safety Management System
PDF
Build Multi-agent using Agent Development Kit
PPTX
AIRLINE PRICE API | FLIGHT API COST |
PDF
AI in Product Development-omnex systems
PPTX
What to Capture When It Breaks: 16 Artifacts That Reveal Root Causes
PDF
A REACT POMODORO TIMER WEB APPLICATION.pdf
PDF
Multi-factor Authentication (MFA) requirement for Microsoft 365 Admin Center_...
PDF
System and Network Administraation Chapter 3
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
medical staffing services at VALiNTRY
PPTX
Materi-Enum-and-Record-Data-Type (1).pptx
PDF
Become an Agentblazer Champion Challenge Kickoff
How Creative Agencies Leverage Project Management Software.pdf
Transform Your Business with a Software ERP System
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Materi_Pemrograman_Komputer-Looping.pptx
Introduction to Artificial Intelligence
Understanding Forklifts - TECH EHS Solution
Mastering-Cybersecurity-The-Crucial-Role-of-Antivirus-Support-Services.pptx
ISO 45001 Occupational Health and Safety Management System
Build Multi-agent using Agent Development Kit
AIRLINE PRICE API | FLIGHT API COST |
AI in Product Development-omnex systems
What to Capture When It Breaks: 16 Artifacts That Reveal Root Causes
A REACT POMODORO TIMER WEB APPLICATION.pdf
Multi-factor Authentication (MFA) requirement for Microsoft 365 Admin Center_...
System and Network Administraation Chapter 3
Upgrade and Innovation Strategies for SAP ERP Customers
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
medical staffing services at VALiNTRY
Materi-Enum-and-Record-Data-Type (1).pptx
Become an Agentblazer Champion Challenge Kickoff

Software Pitch 2018

  • 1. Yves Caseau - The Joy of Programming – June 2018 1/9   // finds a cell with a min count (heuristic) findPivot(g:Grid) : any -> let minv := 10, cmin := unknown in (for c in g.cells (if (c.value = 0 & c.count < minv) (minv := c.count, cmin := c)), cmin) // solves a sudoku : branch on possible // values using a recursive function // branch(...) does all the work :) solve(g:Grid) : boolean -> when c := findPivot(g) in exists(v in (1 .. 9) | (if c.possible[v] branch((c.value := v, solve(g))) else false)) else true // first propagation rule r1() :: rule(  c.value := v => (store(c.line.counts,v,0), store(c.column.counts,v,0), store(c.square.counts,v,0), for v2 in (1 .. 9) (if (v != v2 & c.possible[v2]) noLonger(c,v2), for c2 in (c.line.cells but c) forbid(c2,v), for c2 in (c.column.cells but c) forbid(c2,v), for c2 in (c.square.cells but c) forbid(c2,v)))) // if c.count = 1, the only possible value is certain r2() :: rule( c.count := y & y = 1 => c.value := some(y in (1 .. 9) | c.possible[y])) // if a value v is possible only in one cell, it is certain r3() :: rule( updateCount(cs,v) & cs.counts[v] <= 1 => when c := some(c in cs.cells | c.value = 0 & c.possible[v]) in c.value := v else contradiction!()) Yves Caseau Michelin Group CIO NATF (National Academy of Technologies of France) Thinking, Designing, Writing,Thinking, Designing, Writing, Testing … and Living with Code:Testing … and Living with Code: Software in the 21Software in the 21stst centurycenturyYves Caseau Group CIO, Michelin NATF ADN Meetup, Le Crest June 28th , 2018 (v0.5)
  • 2. Yves Caseau - The Joy of Programming – June 2018 2/9 The Need for Elegant ProgrammingThe Need for Elegant Programming Constant change : love your code   Constant change & constant training Refactoring : your code is a garden !
  • 3. Yves Caseau - The Joy of Programming – June 2018 3/9 Software Development is a Team SportSoftware Development is a Team Sport The world moves too fast to stay alone  Build up your community  Share your code to hire extra eye balls
  • 4. Yves Caseau - The Joy of Programming – June 2018 4/9 Software is about Experience, not FunctionsSoftware is about Experience, not Functions  User Experience Design is critical  Cross-functional squads required  Polyvalence makes collaboration easier
  • 5. Yves Caseau - The Joy of Programming – June 2018 5/9 Always Ask for Help !Always Ask for Help ! In the 21st century, to code starts with search  Get in touch with your community for regular training Leverage the power of MOOCs – Be curious !
  • 6. Yves Caseau - The Joy of Programming – June 2018 6/9 Thinking and Doing in a Constant Learning LoopThinking and Doing in a Constant Learning Loop  Analysts and Developers : 20th century concepts   From mechanical design to organic growth  Real-life operability issues makes delightful math problems
  • 7. Yves Caseau - The Joy of Programming – June 2018 7/9 Good Software is Grown From Quantified FeedbackGood Software is Grown From Quantified Feedback  Listen constantly to your users   Learn from measures – grow from your mistakes  There is no user satisfaction without fast response time
  • 8. Yves Caseau - The Joy of Programming – June 2018 8/9 Remember that You Belong to an EcosystemRemember that You Belong to an Ecosystem  Your app is not isolated – recognize the system you are in  Your users are not isolated – recognize the flows  Don’t aim to be a “solution consultant” – be a magician !
  • 9. Yves Caseau - The Joy of Programming – June 2018 9/9 ConclusionConclusion Thank you for inviting me  There has never been a better time to write code  Don’t build walls around yourselves   Let’s complete the Lean & Agile deployment
  • 10. Yves Caseau - The Joy of Programming – June 2018 9/9 ConclusionConclusion Thank you for inviting me  There has never been a better time to write code  Don’t build walls around yourselves   Let’s complete the Lean & Agile deployment

Editor's Notes

  • #2: This is not your CIO speech, it’s a dinner speech from an outsider expert - food for toughts Illustrations taken from my pet project – I will not go into it (not our topic today) – it is a a subliminal message Programming is fun (week-end &amp; vacations) I eat my own dog food : I apply to myself the advice that I am going to share
  • #3: Constant change =&amp;gt; easy to update =&amp;gt; nice code / well organized / easy to read (black box model is dead) Constant change in tech =&amp;gt; tools matter (iOS example) / Xcode Key idea : incremental (piece by piece / Agile) is great … but is creates accumulation and complexity
  • #4: Code in the first century is meant to be shared =&amp;gt; use the proper tools (GitHub) ADN is a Community  Communities is the best way to tackle complex things in changing world / complex world + need for reuse =&amp;gt; community Key principle from open source : reliability = f(1/bugs) = f(eyeballs)
  • #5: Obvious in the world of digital apps .. But true everywhere – Cross function experience is necessary to tackle at the same time usability, pleasure, performance, reliability … Not every one is everything : specialization occurs; but T-shaped is what works best
  • #6: The best efficiency comes from writing no code  “Collaboration does not mean to share what you know but what you don’t know” (pull / push) Curiosity has always been the mother of innovation, but today it is so efficient (access to knowledgeà
  • #7: What I mean : developers should be analysts (always) … and analysts should be developpers (today – because of complexity and change) – Taylorism is dead (requires stability) From Design to dev : the best theory is the one that works – Kevin Kelly &amp; Emergence From Dev to Design : Non-functional requirements (really practical reliability/ease of deply / operability) is worth a lot of thinking (Google SRE book)
  • #8: CFLL (explicit, implicit, social) : key for digital =&amp;gt; true for E2E SW (true for SaaS) Key lesson of Lean Startup : validated learning (analyst’s joker) Measure + focus on giving back free time to the user =&amp;gt; cf. Web Giants + Lean theorem “Tightly optimized systems are more robust”
  • #9: Software ecosystems are powerful : you need to surf the wave Digital : Customer journey is the key tool =&amp;gt; for E2E software, it’s business process and practice communities (BP do NOT capture everything) Arthur Clarke: Any sufficiently advanced technology is indistinguishable from magic. Magician are good role models for developers : key importance of practice + customer centricity focus on emotion