I got good at explaining problems by explaining them to my dog. The dog enjoyed the attention, I benefited from formulating the problem in words. Win-win. Since my dog passed, I have been having a hard time coming up with a replacement explanation target. I should just get another dog.
This is generally described as "rubber ducking" from a possibly apocryphal account of a dev who explained his problems to a rubber duck he kept on his desk for the same reasons.
As he says, Polya's How to Solve It focuses on math and of course should be read. To supplement it with algorithmic thinking, there is a great book called How to Solve It by Computer, similar in the spirit.
FYI> The Science of Programming by Dr. William Gries has a formal methodology (based in math) for the proving/developing of algorithms. It is my most frequently re-read college text (and I took the course from Dr. Gries in 1996). While this book's ideas may not help with general programming/development like the e-commerce example, it certainly can apply to the development and proving that an algorithm is correct (and is a great way to practice thinking about problem solving, and does involve writing it down...)
'Mathematical thought' is logical thought, as is algorithmic thought. They are in their surfaces different but at the core the same. Practice devoted to 'mathematical thought' or any thought of precise logical structure will naturally harvest fruit in endeavours of algorithmic nature. Of course logical thought is constrained by its sequential nature (as are our machines of logical thought manifested). In order to "truly think", we do find the unconstrained mind to be orders of magnitude faster and more effective than the relatively inept and slow "logical mind." As the nature of reality "has the advantage" of happening all-at-once-and the human body and its brain being part of this reality, the unconstrained thought is more akin in shape and form to a tempestuous ocean, and ideas and thoughts come and go, appear and disappear continuously in never ending streams, un-bottlenecked by the one-by-one method of logical sequential implication. This is the natural thought-the thought of nature-our natural mode of thinking. The one that goes on even now, as our heart beats and our lungs breathe, and our neurons fire in the billions, even as we have no knowledge or control of their methods. Curiously, now you have presented a simple & brilliant algorithm-and great justification to do so-to plug in into this "mode of thinking" in place of-or rather as you put it in your title, to "Step Away From The Computer." Love all your talks Rich and as always great insight. Cheers from Prague, JFG
Have you come across the “slip box” method? Zettelkasten. There’s also an excellent essay from the 50s i think called something like how to read. That paper has been mega influential in my life in terms of how i research.
I can’t find exactly what Rich said in this talk regarding dynamic typing, but I guess from his emphasis on trade-offs and problem solving that he meant ‘dynamic typing avoids *some* problems’, as in problems that are not part of an application domain.
I got good at explaining problems by explaining them to my dog.
The dog enjoyed the attention, I benefited from formulating the problem in words. Win-win.
Since my dog passed, I have been having a hard time coming up with a replacement explanation target. I should just get another dog.
It sound to me like you could expense it to the company, too. You may as well. 😆
This is generally described as "rubber ducking" from a possibly apocryphal account of a dev who explained his problems to a rubber duck he kept on his desk for the same reasons.
"Not everything is awesome." Amen! Thank you, Rich.
Excellent talk. Thanks for sharing this with us Rich.
As he says, Polya's How to Solve It focuses on math and of course should be read. To supplement it with algorithmic thinking, there is a great book called How to Solve It by Computer, similar in the spirit.
one of the best talk on software development.
I like bed driven development, I'm gonna try hammock now. Thanks Rich :)
This has helped permanently change how I think.
FYI> The Science of Programming by Dr. William Gries has a formal methodology (based in math) for the proving/developing of algorithms. It is my most frequently re-read college text (and I took the course from Dr. Gries in 1996). While this book's ideas may not help with general programming/development like the e-commerce example, it certainly can apply to the development and proving that an algorithm is correct (and is a great way to practice thinking about problem solving, and does involve writing it down...)
Good to know, thanks for the recommendation.
Thank you 😁
'Mathematical thought' is logical thought, as is algorithmic thought. They are in their surfaces different but at the core the same. Practice devoted to 'mathematical thought' or any thought of precise logical structure will naturally harvest fruit in endeavours of algorithmic nature.
Of course logical thought is constrained by its sequential nature (as are our machines of logical thought manifested). In order to "truly think", we do find the unconstrained mind to be orders of magnitude faster and more effective than the relatively inept and slow "logical mind." As the nature of reality "has the advantage" of happening all-at-once-and the human body and its brain being part of this reality, the unconstrained thought is more akin in shape and form to a tempestuous ocean, and ideas and thoughts come and go, appear and disappear continuously in never ending streams, un-bottlenecked by the one-by-one method of logical sequential implication. This is the natural thought-the thought of nature-our natural mode of thinking. The one that goes on even now, as our heart beats and our lungs breathe, and our neurons fire in the billions, even as we have no knowledge or control of their methods.
Curiously, now you have presented a simple & brilliant algorithm-and great justification to do so-to plug in into this "mode of thinking" in place of-or rather as you put it in your title, to "Step Away From The Computer."
Love all your talks Rich and as always great insight.
Cheers from Prague,
JFG
I do my best problem thinking when running personally, but a hammock would be nice
Very interesting concepts, and mostly new to me. Let’s try them out, shall we? ;)
can we please have the slides?
Check out the transcript, which has slides: github.com/matthiasn/talk-transcripts/blob/master/Hickey_Rich/HammockDrivenDev.md
Thanks
14:24 Not everything is awesome.
Good stuff! Good stuff!
Embarrassingly, I never know what to write down when researching stuff. Any suggestions for how to take good notes?
Step one - Stop worrying about the notes being good, and just start writing stuff down :)
Step two - Continue doing that.
Have you come across the “slip box” method? Zettelkasten. There’s also an excellent essay from the 50s i think called something like how to read. That paper has been mega influential in my life in terms of how i research.
Check out "how to take smart notes" by Sönke Ahrens :)
It seems you’re asking two questions here. 1) what to write? 2) how to take notes?
sounds like life-hacking.
dynamic typing == avoiding problems?
I can’t find exactly what Rich said in this talk regarding dynamic typing, but I guess from his emphasis on trade-offs and problem solving that he meant ‘dynamic typing avoids *some* problems’, as in problems that are not part of an application domain.