Skip to content

Instantly share code, notes, and snippets.

@vpalos
Last active August 10, 2019 04:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vpalos/981fc868be3bb2e2a98dcf8f5650b9d0 to your computer and use it in GitHub Desktop.
Save vpalos/981fc868be3bb2e2a98dcf8f5650b9d0 to your computer and use it in GitHub Desktop.
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
}
}
@vpalos
Copy link
Author

vpalos 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