��A coding experiment.
Consider a Scrum development environment. Every programming team has an end user as a member.��
The team's task is to code a credit card validity check.
A first goal is that the user representative shall read the code and agree that it is a correct rendering of their code checker:

������ luhnTest: trialNumber
������ ������ | s1 odd s2 even charValue reverse |

-----------------------------------------------
" Luhn test according to Rosetta"
"Reverse the order of the digits in the number."

������ reverse := trialNumber reversed.
"Take the first, third, ... and every other odd digit in the reversed digits and sum them to form the partial sum s1"
������ s1 := 0.
������ odd := true.
������ reverse do:
������ ������ [:char |
������ ������ ������ odd
������ ������ ������ ������ ifTrue: [
������ ������ ������ ������ ������ s1 := s1 + char digitValue.
������ ������ ������ ������ ].
������ ������ ������ ������ odd := odd not
������ ������ ].
"Taking the second, fourth ... and every other even digit in the reversed digits:
Multiply each digit by two and sum the digits if the answer is greater than nine to form partial sums for the even digits"
������ "The subtracting 9 gives the same answer. "
"Sum the partial sums of the even digits to form s2"

������ s2 := 0.
������ even := false.
������ reverse do:
������ ������ [:char |
������ ������ ������ even
������ ������ ������ ������ ifTrue: [
������ ������ ������ ������ ������ charValue := char digitValue * 2.
������ ������ ������ ������ ������ charValue > 9 ifTrue: [charValue := charValue - 9].
������ ������ ������ ������ ������ s2 := s2 + charValue
������ ������ ������ ������ ].
������ ������ ������ ������ even := even not
������ ������ ].
"If s1 + s2 ends in zero then the original number is in the form of a valid credit card number as verified by the Luhn test."
������ ^(s1 + s2) asString last = $0
---------------------------------
Once this step is completed, the next step will be to make the code right without altering the algorithm (refactoring). The result should be readable and follow the team's conventions.
������

P.S. code attached.