Image for post
Image for post


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.

By Definition

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…

Image for post
Image for post

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

A Quick CI/CD Space Overview

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. …

Image for post
Image for post


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…

Image for post
Image for post

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…

Image for post
Image for post


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…

Image for post
Image for post


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…

Image for post
Image for post

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…

Have you opened up a new software project and saw the following folder structure/package hierarchy ?

Image for post
Image for post

You have?

… You’re not alone. I have personally seen a lot of these and I know there are many other software projects out there that are structured this way as well. Even i have structured a lot of my projects like those as well. In fact, the example you see above is taken from one of my recent projects.

The advantage of above structure is that it is arguably quite easy to understand in terms of the technical content.

You can easily tell…

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