Code Fearlessly
cam.ly
cam.ly
It's one thing that drives me nuts about working on teams: coming in to a version-controlled section of code that has had bug fix work done on it with large sections of old code commented out. "This didn't work, so here is the new stuff." So why keep the old stuff? "Well, I was worried I'd forget XYZ". Then address it when you find it. Throw away that old code.
I would even go so far as to say that out-of-version-controlled code should be discarded with great haste. If you can't rewrite the code from scratch, then you don't understand it. Code lies, cheats, and steals. How do I know it's the code that is at fault? Because it's not the person, and people have needs, and those needs still need to be filled, regardless of whether or not the code does what it says it does.
/* the above is a workaround; Unfortunately _code_ causes a segfault due to bug 123 see:... */
When Thomas Massie was a child, he was fortunate enough that his parents bought a computer, and he desperately wanted to start making robots with it. However, he was smart enough to know that it was a bad idea to start sticking wires into the family computer that cost thousands of dollars. So, Thomas hatched a plan. He figured out that he could scotch-tape photo sensors to the computer screen and write programs that turned portions of the screen either on full brightness or full darkness. That way, he could write programs that controlled motors, without electrically connecting anything to the computer itself.
So I used a collection of optocouplers to glue it all together. Good times.
I've adopted a specific mindset in order to push my perfectionistic tendencies aside - I call it "ship shit" - which means the focus is on shipping something out the door even if it is complete and utter shit; ship it with the understanding that you can make it better later.
This philosophy now has a name - and I like it.
This is so key.
Software companies in general need to emphasise this so that builds are easy, CI is a given and continuous deploys are a no-brainer.
I worked with someone who went into what he called "samurai coder" mode. He'd get his digital sword out and start chopping up the enemy (bad code). We were in an environment where everything could be undone, reset, restarted, or otherwise restored, so his swordplay worked.
Thats really nifty, for you to "code fearlessly", especially (or maybe only so) if you've got huge changesets. :-)
Of course, while I'm happy to code fearlessly (there has never been a code module I've been afraid to jump into), it scares me to death to see some others do it. "Hmm, maybe Hank should just take baby steps..."
But if you have solid tests and spec for the area, I fully agree: be bold (I wrote earlier: http://blog.barrkel.com/2008/07/be-bold.html). But it's not always possible, and you need balance when the issue requires more responsibility.
One thing that makes me like his way is RSI.