Is your CI/CD missing the third C?

If you are reading this post you know that both C’s in CI/CD represent “Continuous” (and if you didn’t already know that, your curiosity is admirable…and, no, “curiosity” isn’t the third C).

Getting to CI/CD can be a challenge, especially if it isn’t set up as part of the first release. (Challenge is not our third C, either, though it is becoming apparent there are many words that start with C related to software systems, so we’ll ignore the false possibilities from here on out). Adding to the procedural challenge of timing, there is also the conceptual challenge of semantics. Some organizations define the continuous Cs as every time a commit is made to the repository; others say it begins with a merge after a review; some say that if it is done “correctly” (are you still counting the “C”s?) there is no need for a review; still others will say that hourly (or daily, or twice daily, etc.) counts; some say you only really need I or D continuously (and others will certainly debate that); and there are bound to be more that don’t come to mind at the moment. What those contiguous definitions of continuous have in common is that they are all correct, depending on the context.

The cruel thing about continuous is that, technically, if it ever isn’t, it never was and cannot be again. Which is not correct, because even when done perfectly, there will be the occasional hiccup and things will need to be re-calibrated to continue being continuous.

Except when they don’t.

When they don’t, there can be several symptoms that are confused with causes. At some point, commits became synonymous with the cards on the Kanban. Sometimes it’s because management thought it would be useful to automate tracking with branches, or people used build failures as a measurement of skill rather than assignment of bug fixes, or PRs are preferred over testing—despite the fact that this approach often leads to more production issues and longer MTTR.

So what prevents those problems (and others) from discontinuing (or preventing the adoption of) CI/CD? It’s the third C, and…

The third C is Culture.

CI/CD requires the adoption of a “shift left” mentality, which in turn requires a culture of fearless experimentation where testing before committing is done as a point of pride, and every time the tests pass is a reason to commit (or “another test passes”, if you are following TDD). This also requires using feature flags that are either centrally managed (which supports runtime management in production) or developer managed, which requires automated testing of the flag.

A successful CI/CD culture depends on the team’s attitude—an attitude built on one part pride, one part professionalism, one part discipline (maybe two parts), and is most easily maintained when it includes the participation of leadership (perhaps the next post will be about the missing “P’s” in technology).

So, after that long walk through what was really a short concept, the key takeaway is that if your team is struggling with starting or sustaining a true (because there are many that are in name only, and you know which ones) continuous pipeline, focus on fostering a cultural shift within your team before investing in tools.

Facebooktwitterredditlinkedinmail
© Scott S. Nelson

How Great Candidates Get Missed by Hiring Managers

YouTube shorts are my guilty pleasure for when I am feeling too lazy to focus on anything for more than two minutes. I ran across the one at the bottom of this post the other day, which I found really inspirational given that I treat a lot of information the same way. Specifically, I don’t spend time committing information to long-term memory that is easily looked up.

I have, at times, committed information temporarily to long-term memory for the purpose of receiving certifications that are helpful in credentialing myself in the eyes of others, I seldom maintain full recall for more than a couple of months past the exam (unless I am currently using it on a regular basis). There are some scripting languages that I have learned multiple times because they fall into disuse between very long term projects.

Before the Einstein quote, I had heard about Henry Ford suing for slander after being called ‘ignorant’. His court testimony was along the lines of “…tell me why I should clutter up my mind with general knowledge, for the purpose of being able to answer questions, when I have men around me who can supply any knowledge I require?” (see Ignorance Is Not Knowing Everything: Henry Ford Model for a good read about this…though I heard about it back when Internet was still capitalized and one had to hear tortured US Robotics™ scream before it could be accessed by most).

In researching the Einstein quote, I ran across a few others on a site I won’t link to because of the nature of the ads they show. Suffice to say, it is a commonly-held sentiment among those considered to be educated, intelligent, and/or innovative.

The point I wish to make, in my frequently-meandering way, is that these quotes and attitudes are all pre-www and even more relevant in light of both the internet as readily available source and the accelerated speed of change it fosters. Memorizing information pertinent to solving technology issues is detrimental to being highly productive both because it requires a narrower range of knowledge, and it often results in relying on outdated information rather than refreshing one’s understanding (which has most likely evolved for the topic since memorized).

Dennis Miller used to close his monologues (which he called rants) with  “But that’s just my opinion. I could be wrong.”, and I used to quote that in my email signature (back when quotes in email signatures was a thing). In this case, I believe if I look it up now, I won’t be (wrong, that is, which I add because even I found that sentence confusing…but still like the Miller-esque structure of it).

Facebooktwitterredditlinkedinmail
© Scott S. Nelson

Rumors of Death Once Again Exaggerated…and Misplaced

I freely admit that I often run out of things worth saying. Lately, I have been rooting through my old LinkedIn posts for reusable gold and dug up this gem today (if Google stuck an add right below this, keep scrolling to the LinkedIn post):

To save you scrolling through the glitchy LinkedIn iFrame, it is:

Scrum is dead: Breaking down the new open development method

It is one of those that I posted with no context, which is a habit I think I will break starting today. Anyway, I went to re-read before re-posting, especially given the show-and-awe headline. Well…turns out Scrum really isn’t dead (gasp!). Other than a theme based on a very narrow view of how software is built, the article does have some valid points about good habits in open source.

What hit me was the irony. The conclusion has a link to a GitHub repo that has not been updated in many years. The main link on the page points to a site dedicated to the articles’ key concept. Well, I assume it used to. Currently it goes to one of those cheesy, spammy Buy this domain pages.

I’ve certainly written my own poor predictions over the years. And, come to think of it, my domain changed since then, so any links to those errors publicly posted will have a similar result. And so will the correct ones.

This morning ramble brought to you by PTO and writing before coffee.

Facebooktwitterredditlinkedinmail
© Scott S. Nelson
Temporarily Disable MWB to Update VSC

Malwarebytes and Visual Studio Code Updates

Either my Google search skills are degrading or the signal-to-noise ratio on this topic is so high only the noise comes through. Either way, I am posting a fix I should think would be easy to find but wasn’t…How to complete Visual Studio Code (VSC) updates with Malwarebytes Premium installed.

To say I found no answer is a bit of an exaggeration. I found several that were just plain unhelpful, and one that worked, but not acceptably. The first time this was an issue, I found an unacceptable solution (I say an, because I don’t consider removing Malwarebytes to be a solution, nor any of the less-polite suggestions of what to do with it) was to turn off Malwarebytes to run the update. While this works, every-vigilant Windows thinks it is an opportunity to win back territory for Defender and starts it, which prevents re-starting Malwarebytes. Being a busy techie, re-starting Windows is a long task because I always have at least 20 applications running.

So when the issue came up again today, I dove back into to the deeper Google waters, i.e., page 2 of the results, and did find a suggestion to temporarily uncheck “Enable Protection”. This must have been referring to a different version, as that was not one of the options. There were several others that could be disabled. To cut a long story short (note that whenever that phrase is uttered is inevitably too late already), I went through the options one by one and found that one that allows the installation to complete: Ransomware Protection.

Temporarily Disable MWB to Update VSC
Temporarily Disable MWB to Update VSC

Here’s hoping this post saves someone some time.

Facebooktwitterredditlinkedinmail
© Scott S. Nelson