Things I Have Thunk

AI Software Engineering

The Third Wish

1000 Stars in cluster. Random distribution of spectral type, mass and position. A random initial velocity is constrained to provide a reasonable chance of stable orbit. Stars ejected from the cluster are usually the result of a computational step size that is too large to accurately model near collisions. Gravitational interaction between each unique star pair is computed and the updated cluster state rendered to produce each frame. This video of a star cluster simulation…

Continue reading

Software Engineering

Death Of The Team?

Boss: “We need something done… really soon.”  Me: “How important is it?”.  Boss: “Really, really important.”  Me: “Important enough that everyone needed to get it done can be given the freedom to make it their unambiguous priority?”  Boss: “…”  Me (eyebrows engaged): “…?”  Boss: “Tell me what that looks like.”   Have you ever worked on a team that was so productive you felt energized about work? Don’t feel bad if the answer is “no”. Maybe instead of trying to improve morale…

Continue reading

Software Engineering

About Tweetle Beetles – Part II

We left Part I with two questions on the table: Another swing at a quantitative approach I’m not ready to give up on a quantitative assessment of tech debt, so let’s take another swing. I really do think it’s that important. So here is how I propose we think about technical debt. A healthy technology stack is one that is generating revenue sufficient to pay for its operational cost and the incremental cost of forward…

Continue reading

Software Engineering

About Tweetle Beetles – Part I

Let’s have a little talk about tweetle beetles. What do you know about tweetle beetles? Well… Dr. Seuss, Fox In Socks Someone clever once said engineering is doing for a dime what any fool can do for a dollar. That speaks to the over-constrained nature of almost all business ventures. Another way to state this is that we generally are struggling even to come close to building a desired good for a cost that can barely…

Continue reading

Software Engineering

Write DONE Criteria Like It Matters

One of the things I like about freelancing is the clarifying moments it often provides. One of those has to do with the concept of “billable hours”. We generally understand that when you are being paid a salary you add value beyond the time you spend in front of a screen. That said I do find that when charging by the hour it tends to focus my effort to make sure every billed hour is…

Continue reading

Software Engineering

How To Risk-Manage Your Way Through Almost Anything

Or, why does everything always suck so bad? One of the most frequent (and most serious) frustrations I encounter among direct reports and peers is expressed as some variation of “why don’t we ever have time to do things right?” What makes this ironic is that I don’t think any executive ever got up one day and decided they wanted their company to build a steaming pile. Ok – there is considerable evidence to the…

Continue reading

Software Engineering

Duration Mismatch In Code

Yes, this is an article about software engineering. No, I am not talking about the Silicon Valley Bank failure… Or am I? Duration mismatch is the difference in time to maturity between a company’s assets and liabilities. (Also note the adjacent concepts of duration risk and duration gap if you’re the sort who wants to dig deeper.) We already use the financial analogy of tech debt in software. It seems only reasonable we might want…

Continue reading

Software Engineering

Constraints Are Your Job

Ever feel like everything you are trying to do would be so much easier if it weren’t for all the constraints? Ever think maybe that’s a good thing? I didn’t think so. We tend to think of constraints as the problem. And let’s face it, there is a level of constraint that basically translates into “game over”. But under normal circumstances managing constraints is not getting in the way of doing your job, it is…

Continue reading

Software Engineering

The Other Code Smell – Rot

Code Rot conjures up images from sci-fi more than something to be seriously concerned about. Rot or decay implies a loss of integrity, a loss of capability or suitability for the intended purpose, succumbing to pathogens, all accompanied by a bad smell. Since all these things can be observed in software systems, if somewhat metaphorically, rot would seem to be an apt description. Software rot is driven by the changes we make (internal factors) and…

Continue reading