Articles by Alex Bunardzic

Thu 02 December 2021

Don’t debug; do TDD instead

Avoid wasteful debugging activities by creating automated tests using TDD technique

Tue 23 November 2021

Plate-emptying is not the same as Done

Maximizing the utilization of the time spent on creating software is a surefire way to drive the team into a brickwall

Wed 17 November 2021

How do we know what our customers value?

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.

Fri 12 November 2021

How to increase collaboration

How to improve the flow of teamwork

Fri 12 November 2021

Guidelines to start and terminate the Townhall Events

A super-event to foster systems thinking and the removal of barriers and silos

Thu 11 November 2021

Guidelines to start and terminate the Dojo Events

Instructions on how to start, run and terminate Dojos

Tue 09 November 2021

How to create deterministic tests

Quality of automated tests is the most important aspect of continuous delivery

Thu 04 November 2021

Do not automate anything unless you automate the tests

Automating critical systems operations without having automated tests is risky practice

Wed 27 October 2021

Quality of Design

Adopt design principles to ensure highest quality of the code design

Mon 25 October 2021

Don’t become an Expert Beginner

How to avoid the trap of getting stuck in an Expert Beginner role

Fri 15 October 2021

Cultivate apathy for details to enable refactoring

Give equal care to the code structure as you would give to the code behaviour

Thu 16 September 2021

Track work with POPCORN Flow

Work challenges are opportunities to explore, experiment, and track the feedback gathered from the innovation

Fri 10 September 2021

How is ordering a pizza similar to hexagonal architecture?

How to build a system that interacts with the outside world without knowing the gory details of the outside world

Wed 25 August 2021

Systems thinking

Switch focus from monitoring and measuring activities and outputs to measuring outcomes

Wed 18 August 2021

Get rid of redundant tests

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.

Thu 05 August 2021

Cultivate rapid spreading of knowledge

Knowledge must be shared rapidly to enable teams to continuously deliver desired values

Tue 27 July 2021

First International TDD Conference

First International TDD Conference generated a lot of good interest and traction

Thu 22 July 2021

Refactoring saves time and increases quality

Design is not a static construct, it evolves by refactoring as we keep changing the code

Tue 13 July 2021

OODA Loop and DevOps

What is the relationship between Observe-Orient-Decide-Act Loop and DevOps.

Fri 28 May 2021

Client-side expressiveness and security

The importance of properly securing client-side applications has never been more urgent!

Wed 12 May 2021

Extreme Programming (XP) provides options

What does 'extreme' in Extreme Programming stand for? It stands for extreme interruptability and extreme steerability

Fri 07 May 2021

Start together work together finish together

Speed up the delivery process by avoiding queuing and needless looping

Thu 29 April 2021

Introducing the Automation Working Group

Any system operation we can perform manually can be fully automated by writing scripts

Thu 22 April 2021

Only changeable design is good design

Why is changeable design desirable and what's preventing us from achieving it

Thu 08 April 2021

Synchronized 'if' statements considered harmful

Duplicated imperative conditional logic leads to proliferation of bugs

Wed 31 March 2021

Extreme Programming 25 Years Later

Extreme programming keeps going strong 25 years after its launch

Fri 26 March 2021

Code-as-text

Programming computers by feeding them plain text is very slow and needs to be sped up.

Fri 19 March 2021

Incremental and Iterative Development – what’s the diff?

Visual example illustrating the fundamental differences between incremental and iterative development process.

Fri 05 March 2021

Workflow-as-code

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

Fri 19 February 2021

WorkSafeBC DevOps Celebrate 100th Sprint

WorkSafeBC DevOps 100th sprint celebration coincided with the 20th anniversary of the Agile Manifesto

Sat 24 October 2020

Don’t let your code talk to strangers

Closer look into the principle of least knowledge

Thu 22 October 2020

Collective code ownership

Teams share collective responsibility and therefore collectively own the code

Mon 19 October 2020

Benefits of boundaries

Simple isn't easy, but it is the only way to build anti-fragile systems

Fri 16 October 2020

Why extract methods when modifying legacy code?

Legacy code is hard to test, so extract methods by writing micro tests

Thu 15 October 2020

Benefits of frequent deployments

The longer the wait to deploy, the bigger the risk of things going south

Tue 13 October 2020

Hypothesis-Driven Development

Developing a feature without formulating a hypothesis is like shooting in the dark

Sat 03 October 2020

The cost of avoiding change

Change is stressful and risky, but avoing it is even riskier

Thu 17 September 2020

How does it feel to write software when doing TDD?

Any discipline requires serious investment in time

Fri 04 September 2020

Feature-flag Driven Development (FFDD)

Replace physical modularity with logical modularity