Articles by Alex Bunardzic
Work-about-work
Avoid the overhead of work-about-work and adopt real time collaboration
Selling technical excellence is the most challenging job
Technical excellence is best practiced by collaborating in real time
The problem with big batches
Improve the predictability of delivering business value by reducing the utilization rates
Make yourself interruptible
Adopt humble approach when creating software products by making yourself open to interruptions
DevOps value proposition
DevOps introduces simultaneous focus on expectations, architecture, design, testing, building, releasing, and running the system
How to minimize queueing
Adopt the humble approach to only work in smallest possible batches with limited work-in-progress
Systems thinking and the flow of work
Speeding up software development may not speed up the delivery
Replace road maps with sea charts
Adopt more modest planning strategy by treating the journey as if sailing trecherous waters
Don’t debug; do TDD instead
Avoid wasteful debugging activities by creating automated tests using TDD technique
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
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.
Guidelines to start and terminate the Townhall Events
A super-event to foster systems thinking and the removal of barriers and silos
Guidelines to start and terminate the Dojo Events
Instructions on how to start, run and terminate Dojos
How to create deterministic tests
Quality of automated tests is the most important aspect of continuous delivery
Do not automate anything unless you automate the tests
Automating critical systems operations without having automated tests is risky practice
Quality of Design
Adopt design principles to ensure highest quality of the code design
Don’t become an Expert Beginner
How to avoid the trap of getting stuck in an Expert Beginner role
Cultivate apathy for details to enable refactoring
Give equal care to the code structure as you would give to the code behaviour
Track work with POPCORN Flow
Work challenges are opportunities to explore, experiment, and track the feedback gathered from the innovation
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
Systems thinking
Switch focus from monitoring and measuring activities and outputs to measuring outcomes
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.
Cultivate rapid spreading of knowledge
Knowledge must be shared rapidly to enable teams to continuously deliver desired values
First International TDD Conference
First International TDD Conference generated a lot of good interest and traction
Refactoring saves time and increases quality
Design is not a static construct, it evolves by refactoring as we keep changing the code
OODA Loop and DevOps
What is the relationship between Observe-Orient-Decide-Act Loop and DevOps.
Client-side expressiveness and security
The importance of properly securing client-side applications has never been more urgent!
Extreme Programming (XP) provides options
What does 'extreme' in Extreme Programming stand for? It stands for extreme interruptability and extreme steerability
Start together work together finish together
Speed up the delivery process by avoiding queuing and needless looping
Introducing the Automation Working Group
Any system operation we can perform manually can be fully automated by writing scripts
Only changeable design is good design
Why is changeable design desirable and what's preventing us from achieving it
Synchronized 'if' statements considered harmful
Duplicated imperative conditional logic leads to proliferation of bugs
Extreme Programming 25 Years Later
Extreme programming keeps going strong 25 years after its launch
Code-as-text
Programming computers by feeding them plain text is very slow and needs to be sped up.
Incremental and Iterative Development – what’s the diff?
Visual example illustrating the fundamental differences between incremental and iterative development process.
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
WorkSafeBC DevOps Celebrate 100th Sprint
WorkSafeBC DevOps 100th sprint celebration coincided with the 20th anniversary of the Agile Manifesto
Don’t let your code talk to strangers
Closer look into the principle of least knowledge
Collective code ownership
Teams share collective responsibility and therefore collectively own the code
Benefits of boundaries
Simple isn't easy, but it is the only way to build anti-fragile systems
Why extract methods when modifying legacy code?
Legacy code is hard to test, so extract methods by writing micro tests
Benefits of frequent deployments
The longer the wait to deploy, the bigger the risk of things going south
Hypothesis-Driven Development
Developing a feature without formulating a hypothesis is like shooting in the dark
The cost of avoiding change
Change is stressful and risky, but avoing it is even riskier
How does it feel to write software when doing TDD?
Any discipline requires serious investment in time
Feature-flag Driven Development (FFDD)
Replace physical modularity with logical modularity