%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
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
Notes de l'éditeur
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 & vacations)
I eat my own dog food : I apply to myself the advice that I am going to share
Constant change =&gt; easy to update =&gt; nice code / well organized / easy to read (black box model is dead)
Constant change in tech =&gt; tools matter (iOS example) / Xcode
Key idea : incremental (piece by piece / Agile) is great … but is creates accumulation and complexity
Code in the first century is meant to be shared =&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 =&gt; community
Key principle from open source : reliability = f(1/bugs) = f(eyeballs)
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
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à
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 & Emergence
From Dev to Design : Non-functional requirements (really practical reliability/ease of deply / operability) is worth a lot of thinking (Google SRE book)
CFLL (explicit, implicit, social) : key for digital =&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 =&gt; cf. Web Giants + Lean theorem “Tightly optimized systems are more robust”
Software ecosystems are powerful : you need to surf the wave
Digital : Customer journey is the key tool =&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