First Things First

Cucumber is a BDD (Behaviour Driven Development) tool and BDD is a software development design technique aimed at developing End 2 End tests to drive the design of the application code.

Reference: Behaviour Driven Development

When you have read what i’ve just wrote above, you might immediate think that it is very similar to TDD (Test Driven Development).

In a way it is.

Reference: Test Driven Development

Thus, BDD aims at solving the inefficiencies that TDD produced. Although TDD seems perfect in its philosophies, not many developers took up the TDD approach.

Maybe developers were so used to writing application…


In the software industry you might have heard of the role as a Software Developer or the role as a Software Engineer.

One might think naively that both roles are equivalent and that they are the same. There are certainly commonly used interchangeably. However, they are not the same. Let me explain.

A Software Developer is basically a programmer who writes code to implement features for building a software application.

On the other hand, a Software Engineer is pretty much similar where a Software Engineer can program features for building a software application but where it differs is that a…

DITs (Developer in Test) and SDETs (Software Development Engineer in Test) are pretty much the same role but i personally prefer to distinguish them separately simply because i have seen those roles used different in my past companies.

I want to encourage the usage of SDETs more than DITs because i believe the SDET model works well within modern Agile Software Development.

DITs are really Test Automation Engineers. Their prime responsibility is to write test automation code to automate the testing of a software application. This is fine and certainly i believe DITs have their place in this industry. …

This article is for non DevOps Engineers who want to become DevOps Engineers.

First of all, what is a DevOps Engineer?

There is an argument for not having DevOps Engineer as a role but more of a culture or practice that every one within a software development team should do. This is quite true and i certainly can not go against that argument.

As a Software Engineer myself, i have embraced DevOps over the last few years and definitely know one thing or two about what it takes to become a DevOps Engineer. Sometimes, i am in favour of not…

GitHub Actions is the new kid on the block in terms of CI/CD tools available to use.

This space is congested. First of all, the most famous one of all is perhaps Jenkins. Who haven’t heard of Jenkins right?

Jenkins was born out of a fork of the old Hudson. Remember that?

Then we’ve got a bunch of new CI/CD tools that is mainly online & serverless or more appropriately a SAAS (Software As A Service) meaning you don’t require to run or manage your own CI/CD build servers infrastructure unlike Jenkins/Hudson etc. …


Despite all the tools and features available out there today to assist you in setting a project easily, there is yet still a lot to do to get it set up properly. This is certainly the case for me when i start a new Java project. Spinning up a new Java project these days might seem easy and painless (see section on Spring below) but there is definitely some extra work involved to get the project in a really good usable state that is releasable, deployable, production ready, and with good test setup.

In this article i am going to…

If you are a Java Developer you might have heard of a lot of the following acronyms such as:

  • DTO
  • DAO
  • PO
  • SO
  • BO
  • VO

… and you probably have not much idea of what they mean actually.

Here, in this article i am going to briefly explain what these acronym stands for and for what they represent.

This is perhaps the most common acronym within the Java Development world. I mean, i am sure everyone has heard the term ‘DTO’ at some point.

DTO basically stands for Data Transfer Object. It is a very common software development pattern especially…


Unless you have been living in a cave for all this long, you might have heard of the “DAO” design pattern in software development if you’re a software developer.

DAO is an acronym that stands for “Data Access Object”.

As the name implies, it is an ‘object’ that encapsulates data access operations. In object oriented programming; it is an object that allows or abstracts away the data access element from/to an external data system.

This data system can be any generic data source or can be a very specific kind of database. When this pattern arose; it was common (especially…


I’ve been using Jenkins for many years now and since Jenkins Pipelines came out i’ve been using Jenkins Pipelines ever since. I am a massive fan of Jenkins Pipelines.

However, i am even a bigger fan for Jenkins Declarative Syntax Pipelines since it came out a few years back.

In the first iteration of Jenkins Pipelines you had to write your pipelines using code. The coding language of choice was Groovy. It is still is by the way. You don’t use pure Groovy but what is known as Groovy DSL. This first iteration of Jenkins Pipelines is what it is…

In this article i am going to walkthrough with a demo to show how to use Ansible to deploy an application onto a Kubernetes cluster that is provisioned by Terraform.

First of all, let me lay down some definitions and terms and explanations of those technologies & tools so that we are all on the same page. Also, please allow me to set the scene of the application i am going to deploy.

My Application Overview

As part of this demo i have built an example application that represents an online catalog ordering system used for sales management.

This application…

Colin But

I’m a Software Engineering Enthusiast specialising in DevOps, Cloud Engineering, and Programming, all-round Techie, Coffee-Addict ☕, Blogger, Food Lover, Gamer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store