I insist on doing both. Why am I here and not <blank>?
- registering my own domain? I could but I'm not that serious about establishing a brand.
- wordpress? even more work.
- substack? okay maybe this one would be a better fit, but then I'd feel pressure to do this regurlarly. I mean, the first blog I've read that's primarily on substack is that of Heather Cox Richardson and her volume is definitely not something I'm even capable of aspiring to. She's so big she's been typo-squatted! on substack! And there are others. Many others. I'm too busy going back and forth to work (but not driving!), trying to pull my weight on the chores, being a decent human being to all and sundry etc. etc. to try to measure up to any of those
Naw, when it comes to posting, I'm more like that old dweeb who built a myspace page back when they were big, let it rot and then went back and started posting there again later (while family and friends stand around waiting for something awful to happen, hoping they won't be embarrassed by the result). And no, I'm not doing myspace either. I'm way more about the words and ideas than the pictures and hot takes. I'll do some of that because for me, the world is an array of play buttons, on songs, on poems, on phrases, on movie clips and here, I'm gonna let 'em all leak out (in a controlled fashion if I can remember to do that). But I'll do it in text and links, to wikipedia, to the Things themselves, mostly.
This one's going to be more "perfeshunal" if it's possible to do that in a post that's used the words "naw", "dweeb", "myspace" and "perfeshunal".
I develop software. I've been doing that for 40-odd years now. Sometimes, when my employer has been a Canadian subsidiary of an American company, I've been called an engineer internally, but that's not on. I'm not even a lapsed EIT, let alone a full P.Eng. In fact, I'd been doing this for 10 years before I had even EITs as colleagues, let alone full P.Eng's (there were more than two at Dynapro when I was there). But I knew that in order to become what it needed to be, software had to become more engineering and less development (magic). And now I work for a medical technology company and, well, all the software must be engineered so it can do Great Good without egregious risk.
Some time while I was at Creo, I was reading some culture-of-development book (I think it was Steve Maguire's Writing Solid Code but google isn't helping me out on this one) and there were a list of 9 priorities, in two different orders. The one was put up as a straw man, with the other, clearly more correct, beside it. The more correct list stuck in my brain (as such things do), and I've been using it as a byword ever since. I call it "The Sacred Nine" (I think I was reading Stephen Lawhead's Song of Albion Cycle at the same time and I thought being a "code druid" a cool idea. I didn't get any blue tattoos to back it up but I went in pretty deep, at least in my own head, hence the pompous slightly mystical tome).
So here they are (and whoever you are, if you happen to read this, if I've got some of the middle ones in the wrong order, I take the blame on myself alone):
The Sacred Nine
- Correctness
- Testability
- Global Efficiency
- Maintainability / Clarity
- Consistency
- Local Efficiency
- Size
- Personal Expression
- Personal Convenience
If we work together for more than two months, you'll hear me rattle them off at least once. In some ways this is a motherhood-and-apple-pie list for software but I like having it explicit. I like having the last three on. the. list. In that order. By their true names -- by the time I'd seen this list I had seen those last three cloak themselves as something else more important-sounding, and creep their way up the list to establish themselves as -- if possible! -- Most Important Things (as if that could ever be ANYTHING but correctness).
I came up before things like Test Driven Development, or being Test Infected, before any testing / mocking frameworks were in common use on "PC-class" computers (where I did ALL my development before Infonet). My first source control system was MPW Projector -- before that everything was escrowed floppy disks -- and the next ones I used were MS Delta (discontinued for the dumbest reasons, also known inside Microsoft as SLM or "slime" -- no independent link for this system survives) and MS Source (Un)Safe. I can't imagine what my life would be like now without git -- thank you again, Linus Torvalds (also the creator of Linux).
When I came across this list, it was obvious:
- software has to be correct; no correctness? no value (think Pentium floating point bug, which spawned the "Borg" spin-off: "I am Pentium of borg. Prepare to be approximated")
- if you wanted to say "this software is correct", having extensive enough tests to prove it was obviously desirable, too. So when C++ came of age, and a colleague brought in googletest and googlemock at Teradici, I fell in love with my favourite language all over again
- when you're doing stuff, do the big things the right way (global efficiency) or your users will curse your memory every time your "pessimized" code steals another slice of their lives through waiting.
- tell the obvious truth in your code (maintainability/clarity): computer op code sets are so complex now that the compiler's optimizer will be better at optimizing your code through arcane constructions than you will be
- write new code in the same dialect (consistency) as the code beside what you're inserting is doing -- and do the small things right (local efficiency)
- size used to be important -- I've had colleagues who pushed it up (at least emotionally) to #2 in day to day operations (this was before good test/mock frameworks were available on our end of the market)
- and this is a creative effort (expression) that takes up piles of our time (convenience) so the last two are CLEARLY important to include. At the bottom -- I've had colleagues/managers who pushed them up, in interchangeable order to items 1 and 2 -- but always under different, more important sounding names (I name no perps here).
So there you go. That's the Sacred Nine and I've finally written them down somewhere independently linkable, something I've been meaning to do for a long time, except mostly my life has been full of life except when I'm trying to sleep, (audible version) so I didn't get around to doing this until now.
(not quite a "Sea of Blue" but edging there... this is one place where I can let the noises in my head bother you without feeling the need to apologize)