While working, together with Siebrand, on a project he planted the DevOps seed/mind-bomb in the storm of thoughts in my brain. This opened up a whole new world for me; Everything and everywhere is code!
For the lazy reading, with your eyes closed, some excerpts;
While getting acquainted with this new way of working i must admit i felt some internal resistance; I just want to code! Over time, while diving into The Phoenix Project, i understood that “I just want to code!” isn’t going to cut it. There has to be a higher purpose to the script that i am creating. All scripts should have a common denominator. The reason that i am making a tiny script should address a common goal. Having this in mind, Siebrand and I, started working on assembling scripts into a library of functions. Each function has it’s own purpose and can be easily reused over multiple script. Well, doesn’t it make it more complex? Actually there is a thin layer of complexity over this, however this opens the gates of uniformity. Now all subjacent script will make use of common functions. For instance creating a log file and rotating those log files to prevent the server to clog up. Now all script will make use of this function and the log files are created in the same syntax and have a configurable rotation scheme.
Having this concept in mind we needed to make sure that our library will remain available and that a new function in our library wouldn’t jeopardize our other coding. It is time for versioning of our code. We opted for getting the code checked into the Microsoft Azure (GIT) repository and start using another editor. Siebrand and most other IT co-workers are used to PowerShell ISE. However the ISE is shipped with Windows the PowerShell ISE is no longer in active feature development and there is no support for the ISE in PowerShell v6 and beyond. I was happily content with using PowerGUI from
Quest Dell Quest Software is not on the product list nor being developed anymore. This is certainly not future proof so we head our for a complete IDE environment and we discovered that Microsoft Visual Studio Code was the answer. It has everything we need; multi-platform, community driven, open source, vast majority of extensions, version control, debugging and code linting. Heading out to Microsoft Visual Studio Code!
Our VScode tool chain
VScode also has seamless integration with Microsoft Azure DevOps Services. This enables you to check in code, based on GIT, into the cloud.
It’s also possible to use the widely used GitHub, which has been cleverly acquired by Microsoft recently. GitHub is a smart concatenation of two syllables; Git and Hub.
Git is a distributed version-control system for tracking changes in source code during software development. It is designed for coordinating work among programmers, but it can be used to track changes in any set of files. Its goals include speed, data integrity, and support for distributed, non-linear workflows.
Hub in GitHub represents the HQ for people to share their work, interact with each-other and ultimately create better software together. However GitHub can be used by anyone, not only by software developers!
When gluing the concepts together a foundation has been formed for source code versioning and collaboration, either publicly or privately.
Getting things done (more efficiently)
From all the daily tasks that i have to complete during the day i need to focus on the things that bring to most value to the customer. This isn’t necessarily always adding features to current solutions but certainly also mean shortening the process time for activities. This can be achieved either by creating an automated workflow or by optimizing the current workflow when it comes to getting (more) things done. Ideally the work we put into automating will pay down on the technical debt and thus increasing the overall efficiency of the operation/business.
Altogether this makes me looking at work differently. It’s not about creating a fix for a small problem; we are working towards a common goal while keeping our vision in mind.
The four types of work
- Business projects
- Project that come from the business side of the organization. By facilitating promptly and accurately to these project we help the business and the IT organization will adapt to a profit-center opposed to be historically viewed as a cost-center.
- Internal IT projects
- Keeping up to today’s standard when it comes to infrastructure. a fleet of new network devices, decommissioning a data center, and any number of other internally focused system based activities. The problem with many of these projects is that all too often internal teams are left to manage them independently. They progress with little oversight or visibility and consume untold amounts of resource, which will often adversely affect progress on Business Projects.
- Every day IT operations will be registering, planning, assessing, building, testing and deploying changes, which may also include managing the process to deploy a change that relates to ether of the project types above.
- Unplanned work / Recovery work
- Unplanned work is recovery work, which almost always takes you away from meeting your goals.
The three ways
- System thinking
- Improving the flow of work, more efficient working means faster delivery.
- Work always follows the DTAP conveyor belts towards the terminus; from DEV, TST, ACC to PRD.
- Lower the amount of WIP (work in progress) by eliminating the bottlenecks
- Reverting back is the last thing we will do as it is slowing down the betterment.
- Visualize the work, make the pile of work visible in chunks so it’s still a pile but it’s defined in achievable tasks.
- Amplify feedback loops
- While having short feedback loop with the customer/business the solution can quickly adapt to the ever changing business. This ensure that the work is effective and efficient at the same time.
- Culture of continual experimentation and learning
- Exploring new ways means that things also will fail. Without failures there is no progress. Keep striving for the most optimal solution.
The five ideals
- Locality and Simplicity
- Focus, Flow, and Joy
- Improvement of Daily Work
- Psychological Safety
- Customer Focus
Tool chain – required software
- Git for Windows
- Github Desktop
- Visual Studio Code
- Visual Studio Code extensions for business;
- Visual Studio Code extensions for leisure;
Setting up the environment