Re: Don't build on sand
*I think you've already decided which.
Perhaps it's that oh-so-rare quality: competence?
This makes me think of a thing I read a while ago about John Carmack's way of working which really resonated with me:
Carmack's code at the time was kind of amazing. In the most complimentary way possible, I call Carmack a "coding insect." Like how a bee knows how to build a hive, Carmack codes with a complete picture in his head of what parts he needs to make a whole. Back then with every generation game engine he'd start over from scratch—I mean really from scratch, not namby-pamby "I rewrote some of the code and called it scratch." Since his engines ran on a variety of machines and OSes, he wrote every damn function himself. Carmack needs to log something? Carmack writes a logging function. New generation of engine? New logging function. EVERYTHING from SCRATCH.
Because I was young, super-anal, and wasn't on SSRIs back then, I once asked Carmack why he didn't use libraries for common functions that he could share between engine revisions. Carmack's a super-nice guy, but on this one instance he used the "Well, I think my methods work pretty well..." defense. I never suggested coding style changes again.
But, really, for him it made no sense to share code, because, like a bee, it was just as fast to write new code. The template was in his head, he types really REALLY fast—why bother importing something?
I have been accused of NIH in the past, but in the same way as Carmack, it's not (exactly) NIH, it's that I can write something and have complete understanding and control in a similar timeframe to importing something and learning the API, and where I'm at the whims of someone else to have things like bugs addressed or features added.
...or, at least, that's what I tell myself. It's also possible that I'm just old too... ;)