Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
function Main() {
Iterate {
IdentifyNextThread()
For each Thread {
PullThread()
}
}
}
function IdentifyNextThread() {
Ask("Tell me THE MOST/NEXT important thing this product does?")
For each Thread candidate {
Ask("Is this a valuable feature? Is this a selling-point?")
ApplySIRI()
if isValuable() or
isCoreFeature()
then
Capture(Thread)
}
}
function PullThread(Thread) {
IdentifyChallenges(Thread)
For each Challenge {
IdentifyBigPatterns(Challenge)
For each Pattern {
ExtractITDs(Pattern)
}
}
}
function IdentifyChallenges(Thread) {
Challenges = Ask("What was hard about doing this thing? What problem were you trying to solve?")
For each Challenge candidate {
Ask("Why is this hard? Am I missing something?")
ApplySIRI()
if isHard() and
isImportant()
then
Capture(Challenge)
}
return valid Challenges
}
function IdentifyBigPatterns(Challenge) {
Patterns = Ask("What were the big patterns you used to solve that problem? Walk me through the flow.")
For each Pattern candidate {
Ask("Why did you use this pattern? How does it solve the problem?")
ApplySIRI()
if isRealPattern() and
isRealSolutionToTheChallenge()
then
Capture(Pattern)
}
return valid Patterns
}
function ExtractITDs(Pattern) {
Ask("What did you have to do to apply that pattern to your problem space?"
"What important data-structures did you use?"
"What core algorithms did you use?")
AskCuriousQuestions()
For each ITD candidate {
ApplySIRI()
if isImportant() and
isTechnical() and
isRationalDecision()
then
Capture(ITD)
// Most valuable ITD types are:
// - TechDiffs
// - DataStructures and DataFlows
// - Algorithms
}
}
function ApplySIRI(Idea) {
Iterate {
Simplify(Idea)
Internalize(Idea)
Replay(Idea)
if isSimple(Idea) and
isCorrect(Idea) and
isUnderstood(Idea)
then
break
}
}
@mbreslow

This comment has been minimized.

Copy link

commented Feb 15, 2018

IdentifyThreads() function is missing. Is it Ask("Tell me THE MOST/NEXT important thing this product does?")?

Neat code. It looks pretty complete, simple and easy to understand.

@vpalos

This comment has been minimized.

Copy link
Owner Author

commented Feb 15, 2018

Yes, your intuition about the IdentifyThreads() function is correct. I've adjusted it to reflect that.

I'd still like to add these though, but without adding complexity:

  • AskCuriousQuestions() is something that could happen at almost any level (just like ApplySIRI), I need to reflect that.
  • New threads can be identified along the way? How are those captured/pulled?

Thanks Marc!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.