Articles in the Posts category
Questioning the recommended approach to upgrades and the use of generic templates.
The notion of developers relying on testers to validate changes can be so startling that it feels like my head might explode.
Understanding why we are disabling classic Azure Pipelines and embracing YAML-based Azure Pipelines.
Why run a validation build in your pull-request?
"Kanban" is Japanese for "visual card" or "signal."
Dealing with a Kanban Board meltdown, by controlling the work in progress.
Balancing noise and agility with smaller batch sizes.
why software bugs should not be categorically considered technical debt.
What is Mutant testing and why is it so valuable?
Exploring the deployment rings, continuous delivery and deployment, to discuss release on demand.
What are all those Warning and Information outputs from a build and why should I care if its not an error?
Reasons why is it important to pay attention to all the warning and information message generated when compiling your code.
Help us prepare our meetup session to ensure we cover what is interesting for YOU!
Dependency Injection aligns seamlessly with the SOLID principles.
How to implement a pull request workflow within the context of a trunk-based development.
Innovation podcast with Marius De Beer
Frequently Asked Questions (FAQ) that have been mushrooming during our evaluation phase. Part 2 - FAQ.
Getting started with GitHub Copilot - Part 1: Setup.
An engineering mindset that prioritizes quality is crucial for producing robust and reliable solutions.
Streamline Your Process: Isolating the Provision and Deployment Steps for Efficiency?
Software Engineering Standardization
Navigating Azure DevOps Complexity: Harnessing Objects to Simplify YAML Template Parameter Management
Seizing the chance to enhance and optimize our CI/CD/IaC pipelines.
Our vision is *aC, but to avoid boiling the ocean, we will focus on an overview on IaC today.
An informal conversation around innovation with Bill, Omar, Sebastian, Sarav, and Todd
Yes, I LOVE Azure DevOps, but it is not the answer to the universe.
At a recent water cooler we chatted about why WorkSafeBC is such a cool place to work for.
Software Engineering Practices & Process
Why does the hierarchy view [not] vanish when selecting a filter?
What am I missing? Is this not a common dependency challenge?
Today we have open-sourced our Technology Framework Monitor (TFM).
Why bother with governance when no-one can find it?
The problem is not with projects but with project-focused thinking
Empower engineering without compromising security
A few useful "did you know" tips when using Azure Boards.
“Success is not final, failure is not fatal, it is the courage to continue that counts.” – Winston Churchill
Application Layering - Separation of Concerns Architecture Principle
Clearly yesterday was a bad day.
A question that made me speechless at a recent Navigating the Future event.
Two pull requests with pipeline updates for your perusal.
Naming Convention Nuggets of Knowledge and Best Practices
Be careful not to annoy Azure DevOps with your automated maintenance jobs!
Keep Azure DevOps setup simple and avoid a lot of pain and waste!
Nuggets of Knowledge and Best Practices in Software Engineering
Pull Requests (PR) enable us improve built-in quality, engineering practices, and streamline our continuous integration pipelines.
"Failure is a good option. If you are not failing, you are not trying hard enough." - Elon Musk
Make your YAML pipelines more versatile with conditional expressions.
A few useful "did you know" tips when using Azure Boards for Operational-type teams.
WHERE and HOW to integrate quality assurance into our OSS pipeline blueprints.
A few useful "did you know" tips when using Azure Boards.
Lifting the hood of our consistent, standardized, and self-service based Azure Pipelines.
Test Environments are a critical component of any software development lifecycle.
Ensuring that our solutions meet quality guardrails and governance from ideation to deprecation.
You can chose between governance, policies, or standards, or collaborate with us through guardrails.
A glimpse at our OSS progress and how we use the same pipeline in and out of pull requests.
"Enhance software delivery performance with GitHub Issues, Projects, Actions, and Advanced Security" - Michael Kaufman
"Every person in your company is a vector. Your progress is determined by the sum of all vectors." - Elon Musk
We want to plan and manage dependencies across multiple teams areas, providing awareness of the dependencies in a simple way.
Keeping it simple and avoiding the soul quenching politics
Inadvertently restricting access to thousands of pipelines with a simple automated task group insertion.
Doing a manual and mind-numbing task twice or more? Automate!
Our quest to optimize email and associated WASTE
How WorkSafeBC changed my perception.
We would like to plan how to track and empower engineering to increase deployment frequency, and reduce lead time for change, MTTR, and change failure rates.
Safe and healthy workplaces. Compassionate and responsive service.
Which is better, standardization or experimentation?
Busting a few process myths around branching strategies and pull-requests
Balancing autonomy with consistency and standardization.
My personal crusade to optimize meetings and associated WASTE
Continuous Delivery is no silver bullet and requires persistence, discipline and effort.
Objective, Method and Maturity model for business analytics across an enterprise.
Without real-time evidence, OODA never comes to life.
Selecting a new process or product without surprising or blindsiding anyone.
Looking at our common engineering team through the management (leader) lens
This article is gist of brainstorming session among Quality Assurance (QA) team.
Avoid the overhead of work-about-work and adopt real time collaboration
Technical excellence is best practiced by collaborating in real time
Tired of cluttering your dashboards with duplicated waste?
Improve the predictability of delivering business value by reducing the utilization rates
Adopt humble approach when creating software products by making yourself open to interruptions
DevOps introduces simultaneous focus on expectations, architecture, design, testing, building, releasing, and running the system
How to ensure you are not confronted by hundreds of emails when you are back-to-work.
Adopt the humble approach to only work in smallest possible batches with limited work-in-progress
We succeed or fail as a team (mob), not as individuals!
Introducing the voice of reason and stewards of guardrails
It all depends on the context - [CoE] Working Group
Speeding up software development may not speed up the delivery
How to stop the insane volume of emails and WASTE!
Adopt more modest planning strategy by treating the journey as if sailing trecherous waters
Learning about the genesis of our EDO Common Engineering (EDO Ce) team
Avoid wasteful debugging activities by creating automated tests using TDD technique
Maximizing the utilization of the time spent on creating software is a surefire way to drive the team into a brickwall
We cannot know what customers actually value unless we expose them to our products and services. Here is how to do it in the most elegant way.
Teleport to the future, to optimize the YAML-based Azure Pipeline approvals.
Taking a step back and digesting this week's storm of ceremony posts.
How to improve the flow of teamwork
A super-event to foster systems thinking and the removal of barriers and silos
"People with great PASSION can make the impossible happen" - Elon Musk.
Union of laser-focused experts collaborating to empower its parent Center of Enablement (CoE).
Quality of automated tests is the most important aspect of continuous delivery
It all starts with people from different disciplines to create a focused competency center and obliterating silos through vibrant collaboration!
Automating critical systems operations without having automated tests is risky practice
Back to the future, to optimize the Classic Azure Pipeline approvals.
Adopt design principles to ensure highest quality of the code design
How to avoid the trap of getting stuck in an Expert Beginner role
“I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail.” - Abraham Maslow 1966
Give equal care to the code structure as you would give to the code behaviour
Solving the pipeline-as-code "chicken or the egg" challenge by suppressing selected logic
As a team we want to create an empathetic, safe, and vibrant ecosystem
The use of TLAs creates subpar collaboration, unnecessary confusion, and unintended waste.
Let us explore why the sequence of checkout steps are important in your Azure Pipeline.
Work challenges are opportunities to explore, experiment, and track the feedback gathered from the innovation
How to build a system that interacts with the outside world without knowing the gory details of the outside world
Let us review two strategies to share scripts and config files with your Azure (YAML) Pipelines.
If we unpack the DevOps DNA we will find a prominent genome labeled O-O-D-A.
Switch focus from monitoring and measuring activities and outputs to measuring outcomes
Asking yourself why you are performing a set of manual tasks again and again? If yes, automate!
Keeping the suite of automated tests lean is an essential trait of quality software engineering. Diligently remove all tests that don't add any value.
Knowledge must be shared rapidly to enable teams to continuously deliver desired values
First International TDD Conference generated a lot of good interest and traction
Our quest for continuous improvement, simplicity, consistency, enablement, and automation has taken us into a realm of Azure Pipelines that amaze even our most critical engineers.
Design is not a static construct, it evolves by refactoring as we keep changing the code
What is the relationship between Observe-Orient-Decide-Act Loop and DevOps.
A work-life balance is important, however, I believe that stopping waste and focusing on value is just as pivotal!
Understanding and avoiding gotchas that may keep you up at 2AM, troubleshooting YAML-based Azure Pipelines
Automate a “hello world in less than 1min”, also referred to as our “walking skeleton”.
Understand how to navigate and create content for our technical blog.
Summarising the core terminology and lifetime of our pipelines.
Quick overview how our Azure DevOps access level audits and management automation using PowerShell, REST APIs, and Richard's WIKI Updater task.
The importance of properly securing client-side applications has never been more urgent!
The best way to create an engineering revolt is to enforce governance with the big stick.
What does 'extreme' in Extreme Programming stand for? It stands for extreme interruptability and extreme steerability
Speed up the delivery process by avoiding queuing and needless looping
Use Azure Boards to visualise a variety of processes using the Agile process in a single Azure DevOps project.
Summarising the main points of our 2nd generation app-type blueprint-based pipelines.
Any system operation we can perform manually can be fully automated by writing scripts
Snippets of common questions and issues from Azure Pipeline workshops and support calls. Today's snippet includes conditionals, parameters, and triggers.
As per documentation, output variables can be used across stages in an Azure YAML-based pipeline. I will share a few turbulent moments we experienced while troubleshooting this feature in one of our pipeline blueprints.
Continuous Deployment is a pivotal ingredient of a healthy DevOps mindset and our ability to delight end-users with continuous value. It is the holy grail of our profession.
Why is changeable design desirable and what's preventing us from achieving it
Regular expressions are fundamental to programming
Summarising the main points of YAML syntax, within the context of our generic blueprint-based pipelines.
Part 7: Pipelines - There is more! Simplicity and enablement, courtesy of the app-type blueprint-based YAML pipelines
Do you want to own two or seventy five dozen lines of pipeline code per application? The choice is yours!
Duplicated imperative conditional logic leads to proliferation of bugs
Extreme programming keeps going strong 25 years after its launch
Programming computers by feeding them plain text is very slow and needs to be sped up.
Visual example illustrating the fundamental differences between incremental and iterative development process.
This post attempts to give our critics some answers and scratch the surface of the possibilities and values of our new blueprint-based pipelines.
How to find more information on hosted Azure DevOps agents, such as capabilities and IP addresses.
Configuring complex workflows that govern Continuous Integration and Continuous Delivery must only be allowed by making changes to the YAML source files; GUI tools must be prohibited
Neither the bootstrap nor generic templates are rocket science, and the YAML-based pipelines are as complex as you make them.
Think of blueprints and associated templates as re-usable LEGO blocks, ranging from a bag of "do it yourself" blocks, to complex and detailed kits, such as the Imperial Star Destroyer.
We can use the power of the new multi-stage YAML pipelines to make even our most critical security engineers smile from ear to ear.
With the support from all people, YAML templates support our five (5) core goals and pillars of our common engineering system.
The new Azure DevOps YAML pipelines have been the focus of innovation, enabling engineering to treat pipelines as code.
Pipelines enable engineering to continuously deliver value, map and improve their processes and workflows, promoting consistency and reliability across the organisation.
We need to avoid the infamous 2AM call!
Closer look into the principle of least knowledge
Teams share collective responsibility and therefore collectively own the code
Shared area paths can introduce inconsistency and confusion.
How can we find area path with specific text in their name?
Instead of managing permissions for users in Azure DevOps, we use Azure Active Directory groups to fine tune permissions
The "Move to Team Project" feature can reset your work item state and dates
There is a debate around the value of pull requests (PR), fueled by unfortunate misunderstandings.
Simple isn't easy, but it is the only way to build anti-fragile systems
Legacy code is hard to test, so extract methods by writing micro tests
The longer the wait to deploy, the bigger the risk of things going south
Developing a feature without formulating a hypothesis is like shooting in the dark
Change is stressful and risky, but avoing it is even riskier
Any discipline requires serious investment in time
Replace physical modularity with logical modularity