The origins and philosophy of CI/CD – Using Python for CI/CD Pipelines

The origins and philosophy of CI/CD

A question that people often ask me is, “You started as a developer; how did you end up where you are?” I’ve answered this to an extent over several of the sections in this book, but in short, I had to make my way there because of necessity. These days, the people who develop applications are taught how to do so from the start and do not know about all of the rationale behind it, just how to use it. This is fine; there is no need to dive deeper than you want, but know that this was not always the case. Someone had to figure all of this stuff out (several someones, in fact). And I think my personal journey is more reflective of the people who figured this stuff out than your typical modern DevOps trainee. So, I’ll start recapping this journey as a short dialog of three scenes of me screaming into the void (let’s call it DevOps Doug, that sounds fun). We’ll start with CI.

Scene 1 – continuous integration

It was a late night at my home. I was doing my usual 200 push-up, 300 sit-up routine when it dawned on me that I am really good at writing code. This shouldn’t have been a revelation, it was pretty obvious in hindsight, but upon making this discovery, I decided – being the generous man that I am – that I wanted to share my coding gift with the world, and so I called my old pal Doug for a little help.

Me: Hello, I’d like some help. I have all of this code and I want to share it with my friends.

Doug: That’s easy enough. All you have to do is create, clone, initialize, pull, modify, then push the Git repository. That sounds simple, right?

Me: What’s a repository? Why can’t I just email my code to them, then they can make the changes and email it back to me?

Doug: Well…..

Thus started a long back and forth and a lot of exposition about what version control is, how repositories work, why you have branches, and what pull requests are. If I started going through all of this, I’d have to write another book.

Doug: Did that answer all your questions?

Me: Yeah, I understand it and I understand why it’d be useful, but why is it the way it is?

Doug: Do more and you’ll learn more.

And the journey continued, just like the integration, but much longer and sometimes very boring. We’ll skip the boring parts.

So, I started learning more and realized how important version control is. I also realized that there are very few younger developers who actually take the time to completely understand it. Some quit over the fact that they can’t. But the purpose of CI is clear. It gives a clear history of the modification of code, and it gives you small increments of improvement, which are added on top of other improvements, creating a history of smaller changes that can be looked at, versioned, and understood. It increases organization and understanding more than anything, but those are the things you need first before increasing your speed.

Now, as I evolved, and my skill sets evolved, so did my curiosity. I started thinking, “Is this actually helping the other people on the project?” So I asked them, and they confirmed that it did. I felt it impolite to ask further (also they probably hadn’t looked into it much further either), so I started looking for more advanced material on the internet. This next conversation, about continuous delivery, was rather interesting.

Ti Ja

Leave a Reply

Your email address will not be published. Required fields are marked *

Careers ,Privacy Policy ,Terms of Use, Copyright Policy ,Inclusion Statement, Accessibility, Site Map