Delivering Project & Product Management as a Service

My trip to CI/CD

Most Devops engineers start their journey from application programmers into what is now the software production engineering as building of the software supply chain.
 
Touching code decades ago, my view of software development is a bit from a historical perspective. I remember my visit to the Google campus a few years ago, visiting the computer museum and feeling a bit of an archaeological relic myself. Walking there and seeing the Commodore 64 and Apple II was just like walking the Museum Of Natural History and seeing  Jimmy you pet Dinosaur shown on display. 
 
Historically software engineering went from being Maister based industry in which the master programmer was bringing his owned self developed libraries to his project and developing the application in a very bespoke way; Into an industrial venture in which multiple programmer are assembling a software machine using pre configured artifacts (parts) that follow multitude of standards.
 
Today, a software development project or developing a software product is mostly an industrial venture that is very much like assembling a car with various degrees of customisations.
 
Being in an industrial environment brought back to the field old skills of industrial engineering dealing with the software plant machinery. Now it’s called CI/CD (Continuous Integration / Continues Development)
 
In a way the development cycle of the product was cut into manageable pieces via working in sprints or production batches in the old language, and each piece of software is cycled through the plan, develop, test, integrate (build) – But now those activities are automated via triggers on the source control system that deliver the artifacts via various pipelines through those stages up to the end results of a built working software.
 
Since unlike a physical plant, software development is related to the laws of nature via Anthropy alone, you can actually go and deploy the software automatically and provide the users with new functionality with physical delays.
 
A good way to look at CI/CD engineering activities today is to go back to the old ways of industrial production-line planning:
Break down the product tree into components
Draw the “virtual” pipelines in which each artifact is flowing through.
Create the activities “machines” that should operate along this pipeline – Those are mostly defined on the Integration server: Testing scripts, Integration builds etc.
Deploy the binaries and resources of the product to the binary repository / site / Client.
 
No hands got dirty writing this post.