ks7877 wrote:
I did (and do) wonder how you manage to keep track, prioritize, test and roll out the improvements.
Tracking and prioritizing is largely done through a highly refined process called "Running around like a decapitated chicken".
But seriously, besides the paper notes, it's really about (a) what is on fire right this minute, and (b) if nothing is on fire, what do I
want to work on today? I have a ton of ideas and suggestions and bugs written down, but there is a definite element of working on what will make me happy (read: satisfied) when it is finished.
Of course, I often get derailed, either because something catches fire while I am working on whatever I actually
wanted to do, or because I discover some deeper dysfunction along the way that feels worthy of my attention.
Testing is difficult. Software engineers are notoriously bad at breaking their own code, having spent so much time nurturing it into existence. I'm no different, and I frequently fail to consider all the possible ways that a given piece of code might get used. One defensive mechanism that I have developed over the years is just to write really clean, simplistic, modular code. Really complex code has lots of edge cases. The trick is to write code that doesn't have edge cases, or at least has a bare minimum of edge cases to worry about. I'll often write something that technically
works, but I will throw it away and start over just because I know it's too complex to maintain.
In my former corporate environment, I had a team of software QA people that I worked with, and nurtured careful relationships with. Having a great QA person testing your code is like a superpower, and a luxury I miss. But it also slows down the process -- a
lot -- which was fine when you're writing code that goes into macOS or iOS. What I'm doing here is... quite a bit less disciplined.
Sorry for the bugs.
And finally, roll-out: I am often pushing changes to the server in real time. It's quite unlike the corporate software I used to write -- this is more like working on a scooter that someone else is riding at that moment. I have to consider the current state of the data on the server, what the old code was doing to it, and how the new code will interpret it. It's... kind of a ridiculous way to operate, but that keeps the server going with minimal downtime.
ks7877 wrote:
And I am intrigued as I read and re-read your explanation of finding (or defining) the problem, noodling around the potential solutions and ultimately the fix. I don't understand most of the jargon. Hell, I don't understand most of the lay-person language either

Oh, I don't think you're alone. I think I might be typing to myself more than anything, as there are only a handful of people that might sort-of understand what I am going on about. But sometimes, for me, explaining what I'm doing, even shouting it into the void, is a useful process
just to clarify things in my own head.
ks7877 wrote:
I am fascinated by seeing how your mind works
Well that's unnerving.
ks7877 wrote:
helps me re-examine my critical thinking skills. Thanks, y'all!