3 ms·
Once upon a time, while hiking, an elderly fellow shared his three rules for multi-day hikes: - look backwards from time to time (so you'll know from where you
by 082349872349872 3y ago
Once upon a time, while hiking, an elderly fellow shared his three rules for multi-day hikes:
- look backwards from time to time (so you'll know from where you came in case it's necessary to backtrack)
- know where you think you should be after X hours hike, and compare your actual surroundings to ensure they match sufficiently with the deduced location
- if you do get lost, never leave your drainage (when things are going poorly, don't make them worse)
We later learned he was a program manager for the https://en.wikipedia.org/wiki/Rockwell_X-30 https://en.wikipedia.org/wiki/Rockwell_X-30 , and not only did we use all three rules literally when got lost about half a week later, I've used them metaphorically on all manner of software projects since.
- jakelazaroff 3y agoCould you elaborate? I'm not sure what it means to apply these to software development (at least, 1 and 3). Also, what does drainage mean in this context?
- Jtsummers 3y agoRetrospection, orientation, and I'll re-phrase the last one as "maybe stop digging that hole before it's so deep you can't climb out." (I'm guessing on that last one, not heard drainage used that way either.) Retrospection: Periodically examine what you've made and how, identifying the good, the bad, and the ugly. Try to structure your future work to produce more of the good and less of the bad and ugly. Orientation: Periodically check to see if you're making what you meant to make, is what the customer wanted you to make, and is still what the customer wants you to make. "Stop digging": Ok, you have a bit of code that's almost right, but it fails some tests. Add an extra conditional here, copy/paste a function there, change a constant in the copied code, voila problem solved. Oh, failing another test, let's repeat, and repeat. In the end you have 10x (or more) the necessary code and anyone looking at it would, rightfully, mock you for copying a 10 line function multiple times to make "render_with_black_background", "render_with_blue_background", "render_with_green_background", etc. when you, maybe, could have made it a parameter (with a default value) instead. It's related to the previous two in the sense that if you're actually retrospecting and periodically orienting, you probably won't dig the hole too deep.
- 082349872349872 3y ago1/ "look backwards" - for hiking, literally do so, so it'll look familiar going the other way. For software, remember when and where you've made arbitrary decisions, so you can revisit them and try a different branch when current development isn't working. 3/ "never leave your drainage" - a river-system drainage. for hiking, go downstream when lost: this will narrow the area you might be in, and tends to take you towards civilisation rather than away from it. for software, more metaphorical: debug by figuring out what's working as expected and ruling it out, thereby narrowing the area the bug might be in; the equivalent of leaving a drainage —hiking across a pass into new drainage— would be "fixing" an issue based on what you think the problem is, rather than what you know the problem is, only to wind up with a system that still doesn't work, and now not having any idea if odd behaviour comes from the original problem or from the "fix".
- nickjj 3y ago> if you do get lost, never leave your drainage (when things are going poorly, don't make them worse) I read drainage as a water source and it might still work. In general rivers or any type of running water will have a higher chance of leading to another human being vs not with no other context. You could relate that to software development by emulating running water in the sense that progress is being made if you're moving in a direction that's not fighting the current or stagnating. This could be taken in a number of different ways such as working on things that naturally let you make progress instead of fighting against it or getting lost and going in circles.
- throwway120385 3y agoIn the mountains a drainage gives you a set of guard rails and a set of bounds on a topographical map. Sometimes walking a half a mile in a direction gives you perspective on a peak or another feature that you can identify on the map based on the shape and then you can shoot bearings and locate yourself. Also if you follow water downhill you'll reach successively larger bodies of running or pooled water until you reach the sea. I've been on a hike or two with my wife where knowing where the running water is versus where it should be saved us several hours of being lost.
- thih9 3y agoWhat is drainage in this context?
- 082349872349872 3y agowatershed