The importance of doing it wrong
thingist.com
thingist.com
Did he have a good experience and a tale to tell in the end? Sure, but he has to temper it with how stupid he was being the whole time. You can have awesome experiences without failing! Without being stupid! Without endangering yourself on purpose!
Likewise, with code, it's the same way. How much better it would be to look back on your code and think, 'Man, that's still awesome!'? And let's not forget the people who come after you. Would you rather have them tell you how awesome you code is, or treat you with disdain for the pile of crap you dropped in their lap? And I know what kind of code your employer prefers.
So doing things the wrong way is a symptom of testing your limits, which is a good thing. Of course, you have to be careful. Sometimes, you do things the wrong way out of plain stupidity, so the implication doesn't go both ways.
The moral of the story, something that I spent way, way too long getting to, had to do with some of my friends who don't ever publish their projects. They're so intimidated by the idea of ending up on coders from hell, or whatever other blogs exist to make fun of people, that they end up doing nothing.
And they end up learning nothing.
Or maybe they learn a few things out of the books that they have, but they never actually get to see those things applied anywhere.
Some of the things that have made me grow most as a coder have been when stuff I've written gets submitted to reddit or HN. I've watched my server melt-down more than a couple of times, and every time it happens I learn a little bit more about how to prevent it from happening the next time.
As far as the cycling story goes: I think it's more about managing the risks. Was I ever really in that much danger? Hmmmm...kindof. I certainly screwed up pretty bad, but even if I had ended up camping on the trail, it wouldn't have killed me. It wasn't like I was 1000 miles away from the closest water source or something insane like that.
The other part of it is that I think a lot of people understand the "burn the ship" concept, but they proverbially "burn the ship" while it's still in the dock.
It's also partially a confidence thing. When you screw up really bad, there is nowhere to go but up. It's liberating.
Unfortunately, I think it might have spent a little bit too much time on the bicycling part of the story...
I'm considering rewriting it and submitting it again tomorrow...I think it's an important thing to remember (that screwing up and doing it wrong is how you learn) :)
when some friends, relatively new to unix, asked me various questions, I asked them what would happen if they did:
cd /; rm -fr /
I then suggested that, just to make sure they understood the consequences, they do this on basic Linux virtual machine so they could break the machine as much as they needed. illustrative, useful and they never felt they needed to do it again. bruises and cuts have their place :)
gibson:/# mv * .jpg /var/www/html/images/
ooooops.
I moved my entire directory structure into /var/www/html/images/
No /bin, no /lib, nothing.
Calling things with an absolute path, a la /var/www/html/imagse/bin/ls
gave me:
/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
Eventually, I figured out that calling:
/var/www/html/lib/ld-linux.so.2 --library-path /var/www/html/lib /var/www/html/bin/ln -s /var/www/html/lib /lib
Would let me rebuild the system by mving things back to their proper location.
After that, any problems I encountered seemed trivial.