- take for granted for a minute that professional software development is a _complex_ problem, in the sense of complexity theory.
https://twitter.com/GeePawHill/status/921398267979722752
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:30:40 - i have in recent months been fretting, then, at how to *optimize* for s/d given that fundamental complexity.
https://twitter.com/GeePawHill/status/921398460481449985
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:31:26 - problems that are merely intricate have the property that when you strike them sharply they break into smaller pieces.
https://twitter.com/GeePawHill/status/921398673849937921
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:32:17 - you get problem-shards, smaller ones, and hence more soluble, less intricate. rinse, lather, repeat, and they eventually get "'easy".
https://twitter.com/GeePawHill/status/921398879010074625
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:33:06 - complex problems don't have that property.
https://twitter.com/GeePawHill/status/921399066705256448
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:33:50 - when you strike a complex problem sharply, it still breaks into pieces, but most of them are still complex problems.
https://twitter.com/GeePawHill/status/921399097378164736
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:33:58 - i use the metaphor of color separation. photos are printed by first dividing them into color separation layers.
https://twitter.com/GeePawHill/status/921399855263645697
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:36:58 - the usual is cyan, magenta, yellow, and black, tho others are possible. one photo turns in to four separations, one for each ink.
https://twitter.com/GeePawHill/status/921400006464204800
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:37:34 - notice that the separations aren't themselves *simpler* than their combination. they are all as complex as the photo itself.
https://twitter.com/GeePawHill/status/921400125238448130
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:38:03 - so we strike a complex photo sharply, and we get four equally complex separation layers from it.
https://twitter.com/GeePawHill/status/921400371653890049
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:39:02 - i am in the process of striking professional software development this way. and i have (so far) produced what i think are five separations.
https://twitter.com/GeePawHill/status/921400582337957888
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:39:52 - i caution the reader with the three P's: this work is partial, preliminary, premature.
https://twitter.com/GeePawHill/status/921400809404944384
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:40:46 - partial cuz i don't think i've got it all yet. preliminary cuz i don't think i've got all of even what i've got. premature cuz go easy.
https://twitter.com/GeePawHill/status/921400972529815553
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:41:25 - optimizing for professional software development means optimizing for drive, sustenance, collaboration, stepping, and narrative.
https://twitter.com/GeePawHill/status/921401802054127616
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:44:43 - we optimize for drive, juice, energy, because wrestling with complex problems is much harder than wrestling with intricate ones.
https://twitter.com/GeePawHill/status/921402010590744576
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:45:32 - it demands a level of individual energy and focus and a kind of perpetual improvised preparedness that is simply exhausting.
https://twitter.com/GeePawHill/status/921402596602138624
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:47:52 - we optimize for sustenance -- the continuous reaping of partial value, a kind of "winning on the way" instead of "winning at the end".
https://twitter.com/GeePawHill/status/921402827704094720
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:48:47 - we do this because complexity means we don't actually know where we're going OR when we'll get there.
https://twitter.com/GeePawHill/status/921402930581901312
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:49:12 - we optimize for collaboration, the direct interaction of humans, because dealing w/complexity is almost entirely about the flow of ideas.
https://twitter.com/GeePawHill/status/921403889412386818
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:53:00 - ideas are the scarce resource, and collaboration is a never-ending fountain of them.
https://twitter.com/GeePawHill/status/921404036166938624
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:53:35 - we optimize for stepping -- working in small doable/undoable "not definitely wrong" units -- because "definitely right" is out of reach.
https://twitter.com/GeePawHill/status/921404418540670976
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:55:06 - stepping is the only answer to the knee of predictability, which is the binding constraint of complex systems.
https://twitter.com/GeePawHill/status/921404824045981696
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 15:56:43 - we optimize for narrative -- shared framing stories that explain & suggest local action to ourselves and others -- cuz it's how humans deal.
https://twitter.com/GeePawHill/status/921405936736067584
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 16:01:08 - humans are adept at complexity, we handle it using narrative-rational decision-making, and we handle it better when we're intending to.
https://twitter.com/GeePawHill/status/921406458859802624
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 16:03:13 - so. that's my current take. drive, sustenance, stepping, collaboration, and narrative. five "color separations" for complexity in pro s/d.
https://twitter.com/GeePawHill/status/921406699340292096
— Michael D. Hill (@GeePawHill)Fri, Oct 20 2017 16:04:10